Giả sử chúng ta có một mô-đun phần mềm A thực hiện một chức năng F. Một mô-đun B khác thực hiện chức năng tương tự như F '.
Có một số cách để loại bỏ mã trùng lặp:
- Cho A sử dụng F 'từ B.
- Cho B sử dụng F từ A.
- Đặt F vào mô-đun C của chính nó và cho cả A và B sử dụng nó.
Tất cả các tùy chọn này tạo ra sự phụ thuộc bổ sung giữa các mô-đun. Họ áp dụng nguyên tắc DRY với chi phí tăng khớp nối.
Theo như tôi có thể thấy, khớp nối luôn tăng hoặc ở mức cho thuê được chuyển lên mức cao hơn khi áp dụng DRY. Dường như có một mâu thuẫn giữa hai nguyên tắc cơ bản nhất của thiết kế phần mềm.
(Trên thực tế tôi không thấy ngạc nhiên khi có những xung đột như vậy. Đây có lẽ là điều khiến cho việc thiết kế phần mềm tốt trở nên khó khăn. Tôi thấy đáng ngạc nhiên là những xung đột này thường không được giải quyết trong các văn bản giới thiệu.)
Chỉnh sửa (để làm rõ): Tôi cho rằng sự bình đẳng của F và F 'không chỉ là sự trùng hợp ngẫu nhiên. Nếu F sẽ phải được sửa đổi, F 'có thể sẽ phải được sửa đổi theo cùng một cách.