Bất kỳ số liệu hữu ích nào cũng sẽ là phạtKhi nào bạn nói mã đó là mã Legacy?
Trả lời
Một trong những điều tôi tìm kiếm trong mã là kiểm tra đơn vị. Điều này sẽ cho phép tự do tái cấu trúc nó. Vì vậy, nếu mã không có kiểm tra, tôi coi đó là mã kế thừa.
thuật ngữ "mã cũ" là chủ quan và có thể là thuật ngữ được tải. nhưng nói chung tôi đăng ký xem rằng mã kế thừa là mã không phải là đơn vị có thể kiểm thử được và do đó khó có khả năng tái cấu trúc.
Micheal Feathers, Tác giả của "Hiệu quả làm việc với mã kế thừa" tuyệt vời, xác định nó là bất kỳ mã nào không có kiểm tra.
Hmm ... vậy theo như vậy, 40% mã đang được phát triển hôm nay là mã Legacy ??? – AviD
Có. Theo Feathers, nếu nó được viết mà không có kiểm tra đơn vị, nó sẽ trở thành mã di sản phút nó được viết. –
Oh thôi nào! Có, kiểm tra đơn vị là quan trọng, nhưng định nghĩa này là lấy nó quá xa. Di sản nghĩa là lỗi thời. Mã mà không có kiểm tra không phải là lỗi thời, nó chỉ là một nỗi đau trong **** – Treb
Tôi có thể sai, nhưng tôi không nghĩ rằng có một số liệu được thiết lập cho việc này.
Thông thường một đoạn mã được coi là cũ, khi nó đã thấy ít nhất 5-6 chu kỳ phát hành (có thể nhiều hơn). Thường xuyên hơn không, Trình triển khai gốc không còn tồn tại và mã được duy trì thông qua.
Tôi không biết bất kỳ số liệu thực nào có thể được sử dụng để xác định xem có điều gì đó là "mã cũ" hay không, nhưng bất kỳ thứ gì cũ hơn chỉ được viết có thể được coi là cũ. Mã kế thừa có nghĩa là những thứ khác nhau cho những người/tổ chức khác nhau, vì vậy nó thực sự là một phần chủ quan.
Nếu mã:
- đã được thay thế bởi mã mới mà thực hiện giống nhau hoặc chức năng hoặc tốt hơn
- không được sử dụng bởi các hệ thống hiện tại
- được sớm được thay thế bằng một cái gì đó khác hoàn toàn
- đã được lưu trữ vì lý do lịch sử
- khi nhà cung cấp ngừng hỗ trợ nó
Đó không phải là những gì bạn gọi là cruft. –
Tôi không tin rằng có một câu trả lời dứt khoát, nhưng tôi tin rằng khả năng mã là mã kế thừa tăng lên với số người không muốn chạm vào nó và khả năng thay đổi nó sẽ khiến nó phá vỡ.
Hầu hết giây sau khi người dev rời khỏi cơ sở. :)
Nếu ...
không có tiền trong ngân hàng cho các tính năng mới
bạn không thể tìm thấy bất cứ ai mà thừa nhận làm việc trên dự án mà cần sửa chữa
mã nguồn để dự án bạn sở hữu đã đi MIA
... thì bạn đang làm việc trên mã cũ.
- Khi mã đủ tuổi bạn chưa bao giờ gặp nhà phát triển ban đầu đã viết mã.
- Khi thư viện của bên thứ ba không được hỗ trợ nữa.
Một câu hỏi hay hơn có lẽ là câu hỏi đánh dấu một đoạn mã không thừa kế.
Với di sản của tôi có nghĩa là không thể thay đổi. Vì vậy, ngay sau khi bạn không còn có thể 'thay đổi' nó là di sản.
Cho dù khả năng đó bị xóa theo yêu cầu cố định, sợ vỡ, mất kiến thức hoặc một số tác động khác phần lớn là không liên quan.
Một lưu ý liên quan là tôi không nghĩ mình đã từng sử dụng chính xác từ thừa kế vì nó khuấy động quá nhiều cảm xúc hữu ích.
Chúng tôi sử dụng thuật ngữ "di sản" để chỉ bất kỳ mã, vẫn được sử dụng, phát triển sử dụng công nghệ, chúng tôi đã ngừng phát triển tích cực trong.
Đây là mã mà chúng tôi thà viết lại sử dụng nhiều công cụ mới hơn sửa đổi trong trạng thái hiện tại của nó.
Theo ý kiến của tôi, tất cả mã được viết là mã kế thừa. Nó có thể mất một thời gian trước khi ý định ban đầu và tất cả các quyết định được thực hiện về các mã bị lãng quên nhưng sớm hay muộn bạn không thể tưởng tượng những gì họ đã suy nghĩ trong khi viết nó. Bạn không bao giờ tự viết mã cũ, phải không?
Sử dụng kiểm tra đơn vị hoặc một số biện pháp như giây kể từ khi nhà phát triển rời khỏi tòa nhà không thực sự đo lường mã có phải là mã kế thừa hay không. Mã kế thừa có thể có một bộ kiểm tra và nhận xét đơn vị tốt và có thể đã trải qua quá trình đánh giá mã nghiêm ngặt và phân tích khác. Điều này không có nghĩa là mã vẫn có liên quan cho chương trình trong tầm tay. Nó chỉ gợi ý rằng mã có thể được viết khá tốt. Và nếu nó không còn phù hợp nữa, mã sẽ thực sự làm cho nó khó giải quyết vấn đề mà chương trình được phát triển.
Bản thân tôi thích cách tiếp cận này. Một khi mã đã được viết, nó là "di sản" cho dù có thử nghiệm bao gồm mã hay không. Bạn có thể có các bài kiểm tra bao gồm mã đã được viết aeons trước đây, không có ai xung quanh đó là quen thuộc với mã, và/hoặc sử dụng công nghệ "cũ" ... –
Thông thường mọi người đề cập đến nội dung nào đó dưới dạng mã cũ khi không có ai xung quanh quen thuộc hoặc cảm thấy thoải mái khi duy trì mã.
Kiểm tra đơn vị giúp mọi người không quen với mã để tìm hiểu mã này dễ dàng hơn, vì vậy lý thuyết là nó giúp ngăn mã trở thành "cũ".
Thông thường khi mã được kế thừa, mã sẽ bị thay đổi theo cách khác. Mọi người đang sợ để thay đổi, nhưng cũng có những thay đổi có xu hướng là nhanh chóng và bẩn vì không ai hiểu hậu quả đầy đủ. Các vấn đề trùng lặp mã có thể phát sinh, bởi vì mọi người không muốn mạo hiểm với những thay đổi sâu sắc hơn.
Vì vậy, trong hoàn cảnh như vậy, tình huống có thể trở nên tồi tệ hơn, với tốc độ ngày càng tăng.
Mã cũ đã được xác định ở nhiều nơi dưới dạng "mã không có kiểm tra". Tôi không nghĩ rằng họ là cụ thể trong các loại thử nghiệm, nhưng nói chung, nếu bạn không thể thực hiện một sự thay đổi mã của bạn mà không sợ một cái gì đó không rõ xảy ra, tốt, nó nhanh chóng devolves.
- 1. Legacy mã Java sử dụng com.sun.net.ssl.internal.ssl.Provider()
- 2. Mã Modem nói chuyện với mã Android như thế nào
- 3. Khi tôi gửi SMS, đôi khi mã kết quả = 0. Mã đó có nghĩa là gì?
- 4. Tái cấu trúc: Khi nào bạn biết đó là thời gian và khi nào bạn làm điều đó?
- 5. Việc sử dụng SSL có nghĩa là bạn phải nói rằng ứng dụng của bạn sử dụng Mật mã?
- 6. Bạn đánh giá mã như thế nào?
- 7. Cách giải mã nhập bằng giọng nói
- 8. Ai đó đang sử dụng tên cấu trúc làm tên biến. Mã thực sự nói gì?
- 9. Bạn đang sử dụng mã f # nào?
- 10. Nightmare Code Legacy
- 11. Điều đó có nghĩa là gì khi họ nói http là không quốc tịch
- 12. Định nghĩa về "mã cũ" là gì?
- 13. Trang mã hóa/mã nào là cmd.exe sử dụng?
- 14. __udivdi3 undefined - cách tìm mã sử dụng mã đó?
- 15. Bạn định làm gì trước khi bắt đầu viết mã?
- 16. CQRS với Legacy Systems
- 17. Khi nào nên bao gồm/sao chép mã của bên thứ ba, thay vì tham chiếu/liên kết mã đó?
- 18. Ai đó có thể giải mã javascript
- 19. Sự khác nhau giữa StyleCop và Phân tích Mã khi nói về các quy tắc của từng loại là gì?
- 20. Làm thế nào để bạn stringize/serialize mã Ruby?
- 21. Hiện đại hóa Legacy Cobol
- 22. Eclipse: Bạn có thể định dạng mã khi lưu không?
- 23. Bạn làm cách nào để "kiểm tra" mã?
- 24. Nếu bạn thay đổi mã có kiểm tra đơn vị đối với nó, bạn sẽ thay đổi mã nào trước?
- 25. Gặp sự cố khi giải mã trong C# một cái gì đó được mã hóa trên iPhone bằng RSA
- 26. Mã hóa giọng nói trong Emacs trên Mac OS X
- 27. Làm cách nào để tổ chức mã Javascript của bạn?
- 28. Mã Python ngắn để nói "Chọn giá trị thấp hơn"?
- 29. Tham gia zip là gì? Bạn đã bao giờ nghe nói về điều đó, hoặc một cặp tham gia?
- 30. Bạn sử dụng trình chỉnh sửa đoạn mã nào?
Trình lập trình thực dụng tôi thấy ở đây. –