2008-09-23 21 views

Trả lời

12

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.

+1

Trình lập trình thực dụng tôi thấy ở đây. –

1

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.

5

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.

+0

Hmm ... vậy theo như vậy, 40% mã đang được phát triển hôm nay là mã Legacy ??? – AviD

+0

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. –

+0

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

0

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.

-1

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.

8

Nếu mã:

  1. đã đượ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
  2. không được sử dụng bởi các hệ thống hiện tại
  3. được sớm được thay thế bằng một cái gì đó khác hoàn toàn
  4. đã được lưu trữ vì lý do lịch sử
  5. khi nhà cung cấp ngừng hỗ trợ nó
+0

Đó không phải là những gì bạn gọi là cruft. –

4

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ỡ.

0

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ũ.

0
  • 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.
5

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.

6

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ó.

1

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.

+0

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ũ" ... –

0

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ũ".

0

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.

1

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.

Xem "Working Effectively with Legacy Code"

Các vấn đề liên quan