디자인 패턴이 필요하기 전에 구현하여 복잡성을 조기에 도입하는 것은 좋은 습관이 아닙니다.
그러나 모든 (또는 대부분의) SOLID 원칙을 따르고 공통적 인 디자인 패턴을 사용하는 경우 기능과 요구 사항이 추가되거나 변경되어 디자인을 유지 관리 가능하고 유연하게 유지하기 위해 약간의 복잡성이 발생합니다.
그러나 일단 그 복잡성이 도입되어 챔피언을 제거했을 때 챔피언처럼 작동합니까?
예. 클라이언트를 위해 작성된 응용 프로그램이 있습니다. 원래 몇 가지 방법으로 직원에게 인상을 줄 수있는 곳을 만들었을 때. 전략 패턴과 팩토리를 사용하여 전체 프로세스를 훌륭하고 깨끗하게 유지했습니다. 시간이 지남에 따라 응용 프로그램 소유자가 추가하거나 제거하는 특정 인상 방법.
시간이 지나고 새로운 소유자가 인수합니다. 이 새로운 주인은 코가 단단하고 모든 것을 단순하게 유지하며 인상을 줄 수있는 유일한 방법이 있습니다.
전략 패턴에 필요한 복잡성은 더 이상 필요하지 않습니다. 요구 사항에서이를 코딩 할 위치를 지정하면이 추가 복잡성을 도입하지는 않지만 필요한 경우 작업을 거의 또는 전혀하지 않고 도입 할 수 있는지 확인하십시오.
이제 전략 구현을 제거합니까? 나는이 새로운 소유자가 인상이 어떻게 제공되는지를 바꿀 것이라고 생각하지 않습니다. 그러나 응용 프로그램 자체는 이것이 일어날 수 있음을 보여주었습니다.
물론 이것은 새로운 소유자가 많은 프로세스를 인수하고 단순화 한 응용 프로그램의 한 예일뿐입니다. 수십 개의 클래스, 인터페이스 및 팩토리를 제거하고 전체 응용 프로그램을 훨씬 간단하게 만들 수 있습니다. 현재 구현은 잘 작동하고 소유자는 그것에 만족합니다 (그리고 논의 된 복잡성으로 인해 그녀의 변경 사항을 너무 빨리 구현할 수 있다는 사실에 놀랐고 더 행복했습니다).
이 의심의 작은 부분은 새로운 소유자가 더 이상 나를 사용하지 않을 가능성이 높기 때문에 인정합니다. 나는 그것이 큰 수입원이 아니기 때문에 다른 누군가가 이것을 인수 할 것을 정말로 걱정하지 않습니다.
하지만 나는 2 가지 (관련) 것들에 관심이있다
코드를 이해하려고 할 때 새로운 관리자가 조금 더 열심히 생각해야한다는 점에 약간 관심이 있습니다. 복잡성은 복잡하며 나는 정신 미치광이가 나를 뒤 따르도록 분노하고 싶지 않습니다.
그러나 경쟁 업체가 이러한 복잡성을보고 작업 시간을 채우기 위해 디자인 패턴을 구현한다고 생각하는 것보다 더 걱정하고 있습니다. 그런 다음이 소문을 퍼뜨려 다른 사업에 피해를 입혔습니다. (이 언급을 들었습니다.)
그래서...
일반적으로 이전에는 복잡성이 필요했지만 이전에는 복잡성에 대한 요구가 있었지만 과거에는 복잡성이 제거되어야했지만 앞으로 필요할 것이라는 표시는 없습니까?
위의 질문이 일반적으로 "아니오"로 대답 되더라도 프로젝트를 경쟁자 (또는 낯선 사람)에게 건네 줄 경우이 "필요하지 않은"복잡성을 제거하는 것이 현명합니까?