함수 F를 구현하는 소프트웨어 모듈 A가 있다고 가정합니다. 다른 모듈 B는 F '와 동일한 기능을 구현합니다.
중복 코드를 제거하는 방법에는 여러 가지가 있습니다.
- A가 B의 F '를 사용하게하십시오.
- B가 A의 F를 사용하게하십시오.
- F를 자체 모듈 C에 넣고 A와 B가 모두 사용하도록하십시오.
이러한 모든 옵션은 모듈간에 추가 종속성을 생성합니다. 커플 링을 증가시키는 비용으로 DRY 원리를 적용합니다.
내가 볼 수있는 한, DRY를 적용 할 때 커플 링은 항상 증가하거나 임대 상태에서 더 높은 수준으로 이동합니다. 소프트웨어 설계의 가장 기본적인 두 가지 원칙간에 충돌이있는 것 같습니다.
(실제로 나는 그런 충돌이 있다는 것이 놀랍지 않습니다. 이것은 아마도 훌륭한 소프트웨어 디자인을 어렵게 만드는 것입니다. 이러한 충돌이 일반적으로 서론에서 다루어지지 않는 것은 놀라운 일입니다.)
편집 (설명을 위해) : 나는 F와 F '의 평등이 단지 우연의 일치가 아니라고 가정합니다. F를 수정해야하는 경우 F '도 같은 방식으로 수정해야합니다.