Tôi đang tìm kiếm hướng dẫn về khớp nối DRY và Code. Tôi không thích sao chép mã của mình và tôi cũng không thích ghép mã giữa các mô-đun không liên quan. Vì vậy, tôi tái cấu trúc mã trùng lặp nếu tôi tìm thấy mã trùng lặp giống hệt một năm sau khi sao chép được giới thiệu. Tuy nhiên, tôi đã ngày càng trải qua các tình huống trong đó thế giới thực khó lường hơn nhiều, và sau khi tái cấu trúc mã, đã phát sinh các tình huống yêu cầu loại bỏ mã một lần nữa.
Ví dụ: nếu tôi có mã để xử lý ô tô chạy xăng, SUV xăng, ô tô điện và SUV điện, giả sử tôi đã tái cấu trúc mã trùng lặp thành phân cấp "xăng" và phân cấp "điện", cả hai đều giảm dần từ phân cấp "xe". Càng xa càng tốt. Và sau đó, công ty của tôi giới thiệu một chiếc xe hybrid và Semi Semi - sẽ yêu cầu thay đổi cốt lõi đối với hệ thống phân cấp ban đầu của tôi. Có lẽ nó sẽ yêu cầu "thành phần" giữa xăng và hệ thống phân cấp điện.
Rõ ràng sao chép mã là xấu vì nó làm tăng thời gian thực hiện thay đổi chung cho tất cả các sản phẩm trên. Nhưng việc tái cấu trúc mã phổ biến khiến việc giới thiệu các biến thể dành riêng cho sản phẩm trở nên khó khăn như nhau và dẫn đến nhiều "nhảy lớp" khi người ta phải tìm dòng mã để sửa lỗi - một thay đổi trong lớp cha cấp cao hơn có thể kích hoạt lỗi hồi quy kích hoạt trong số tất cả các hậu duệ.
Làm thế nào để người ta đạt được sự cân bằng tối ưu giữa DRY và khớp nối mã không mong muốn?