더북(TheBook)

I: 인터페이스 분리 원칙(interface segregation)은 일반적이고 광범위한 인터페이스보다 특정 목표를 위한 더 작은 인터페이스를 선호한다. 이는 분명히 잘못된 조언은 아니지만, 불필요하게 복잡하고 모호하다. 광범위한 인터페이스가 더 적합하고, 지나치게 세분화한 인터페이스는 오버헤드를 너무 많이 발생시킬 수도 있다. 인터페이스를 분할하는 것은 스코프가 아니라 설계의 요구 사항에 근거해야 한다. 단일 인터페이스가 해당 작업에 적합하지 않으면 세부 기준에 맞지 않더라도 자유롭게 분할해 보자.

D: 종속성 역전 원칙(dependency inversion principle)이 마지막 원칙이다. 다시 말하지만, 이는 그리 좋은 이름이 아니다. 추상화에 의존한다고만 할 수 있다. 즉, 구체적인 구현에 따른 의존성은 강한 결합이 형성되며, 이미 그 효과가 별로 바람직하지 않다는 것을 알고 있다. 그렇다고 해서 모든 종속성에 대한 인터페이스를 만들어야 하는 것은 아니다. 나는 그 반대로 말한다. 자신이 유연성을 선호하고 그것이 가치 있다고 판단한다면 추상화에 의존하는 것을 선호하고, 그렇지 않다면 구체적인 구현에 의존하라. 자신의 설계에 자기 코드를 맞춰야지 그 반대가 되어서는 안 된다. 다양한 모델로 자유롭게 실험해 보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.