Làm thế nào để đối phó với triết lý tái sử dụng mã?


10

Tôi liên tục thấy mình suy nghĩ về việc tái sử dụng mã khi bắt đầu một dự án mới.

Ở mức độ nào tôi nên làm cho mã của tôi có thể tái sử dụng?
Tôi có nên giới hạn nó trong phạm vi ứng dụng hay tôi nên làm cho nó có thể tái sử dụng bên ngoài dự án?

Đôi khi, tôi cảm thấy như khả năng sử dụng lại mã có thể cản trở một thiết kế đơn giản. Xin vui lòng, chia sẻ sự hiểu biết của riêng bạn và cách tiếp cận sử dụng lại mã.


Câu trả lời:


21

Mã phải hoạt động trước khi nó có thể được sử dụng lại. Vì vậy, ngụ ý thiết kế và chức năng (chính) nên đến trước khi xem xét sử dụng lại mã.

Thật tốt khi nghĩ đến việc tái sử dụng và tái sử dụng các thành phần bạn đã viết. Nhưng đôi khi nó có thể nhanh như vậy, nếu không nhanh hơn, chỉ cần viết mã và làm cho nó hoạt động. Sau khi bạn đã giải quyết vấn đề ban đầu, bạn có thể cấu trúc lại mã để làm cho nó dễ sử dụng hơn.


2
Là "đã" trong câu đầu tiên một lỗi đánh máy "có"?

@del Nam - "đã" là gì? :-) Cảm ơn bạn đã nắm bắt điều đó.

9

Hãy nhớ KISS và YAGNI:

re-usability better to be consideredmột khi bạn đã có tài liệu thiết kế của bạn đã sẵn sàng . Điều này sẽ cho phép bạn xem phần / phần mã sẽ có khả năng bị trùng lặp.

Do đó, khi bạn không có thiết kế rõ ràng thì hãy áp dụng phương pháp KISS và YAGNI trong công việc của bạn!


1

Đây là từ kinh nghiệm của tôi, nhưng vẫn tin rằng nó có thể được áp dụng và đi theo hướng của những gì GlenH7 đã đề cập.

Tôi làm việc giữa 3 công ty làm nhiều dự án khác nhau. Các công ty là chị em của nhau với một số thực tiễn tiêu chuẩn và phương pháp làm việc, nhưng cũng là duy nhất theo nhiều cách. Như đã nói, tôi thường bắt đầu mỗi dự án mới và muốn hoàn thành nó hoặc hiển thị tiến độ. Sau đó, nếu tôi chạy vào một kịch bản mà tôi nhớ một đoạn mã hoặc chức năng mà tôi đã viết cho một dự án trước đó, tôi sẽ thực hiện một trong hai điều (phụ thuộc vào thời gian):

  1. Phương pháp nhanh nhất
    Sao chép mã trước đó từ dự án khác (không có nhiều thời gian) vào dự án hiện tại của tôi.
  2. Phương pháp nhanh thứ hai
    Sao chép mã trước đó và đặt nó vào một thư viện chung, sau đó đưa thư viện đó vào dự án hiện tại (để làm cho việc di chuyển về phía trước dễ dàng hơn).

    2b. Nếu tôi thay đổi dự án (bản gốc) khác, tôi sẽ cấu trúc lại nó để sử dụng thư viện mới [nhưng thường sẽ không làm như vậy trừ khi tôi phải chạm lại vào dự án đó].

Chỉ cần được cảnh báo, kiểm tra quái vật ra khỏi các thư viện phổ biến. Thư viện phổ biến có nghĩa là tạo ra sự phụ thuộc. Sự phụ thuộc tạo ra điểm thất bại. Mặc dù bạn có thể cần một chút gì đó được điều chỉnh một chút cho việc triển khai hiện tại của mình, nhưng bạn không biết nó sẽ thay đổi bất cứ điều gì khác khi sử dụng thư viện đó.


Tại sao sử dụng một triển khai duy nhất của một cái gì đó khi bạn có thể có bốn hoặc năm cái giống hệt nhau? Phương pháp "nhanh nhất" của bạn chỉ nhanh nhất trong thời gian rất gần.
Caleb

@Caleb: Đồng ý. Không bao giờ nói nó là thanh lịch chỉ là thời hạn là thời hạn. Trong quá trình tái cấu trúc, tôi sẽ nhận ra nhiều dự án sử dụng cùng một mã và đi qua và chia chúng ra khỏi thư viện của riêng chúng. Nhưng khi tôi cần lấy nó ra khỏi cửa, sao chép-dán hoạt động. Nó cũng mang lại cho tôi sự linh hoạt để thực hiện các sửa đổi cho một dự án đó và tôi luôn ghi nhớ những thay đổi đó khi tôi phá vỡ thư viện và muốn làm cho nó trở nên vững chắc và linh hoạt.
Brad Christie

1

Đôi khi tôi thấy rằng sao chép và dán vài dòng mã là một giải pháp tốt hơn. Ngay cả trong ngôn ngữ của con người, khi bạn muốn nói một câu bạn đã nói trước đó chỉ với một biến thể nhỏ, bạn sẽ lặp lại nó với biến thể, bởi vì nó gây ra ít rắc rối hơn cho bất kỳ ai.

Tuy nhiên, nếu mô-đun lớn của bạn cần được sử dụng theo một cách hơi khác mà nó không hỗ trợ, đừng sao chép nó chỉ để sửa đổi một vài dòng vì rất có thể bạn sẽ muốn mở rộng chức năng mà cả cơ sở và cơ sở chia sẻ bản sao trong tương lai. Thay vào đó, chỉ cần làm cho nó có thể cấu hình hoặc xuất các chức năng mà cả cơ sở và bản sao chia sẻ vào một mô-đun khác mà cả hai sẽ sử dụng.


0

Đừng làm quá. Và nếu bạn không chắc chắn, hãy bám sát phạm vi ứng dụng cho đến khi bạn viết đủ dự án để xem nơi bạn có thể sử dụng lại những gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.