더북(TheBook)

3.3.1 근거

추상화 원칙을 적용하는 요소 기술은 일관성과 완결성을 보증하는 추상화 생성이다. 서로 관계가 있는 메서드들을 추상화가 지원하지 않을 때 추상화의 일관성과 완결성은 영향을 받을지도 모른다. 예를 들어, 자료 구조에서 구성 요소를 추가하거나 삭제할 수 있어야 하며, 해당 자료 구조를 추상화하는 타입은 add()remove() 메서드 양쪽을 모두 지원해야 한다. 둘 중 하나만 지원하면 서로 관계가 있는 두 메서드의 맥락에서 추상화가 완전하지 못하며 완결성이 없다.

추상화가 이렇게 서로 관계가 있는 메서드 중에서 단지 일부만 지원하면, 추상화를 사용하는 개발자는 나머지 기능을 구현하도록 강요받을 수 있다. 추상화가 노출한 이런 불완전한 인터페이스 문제를 극복하려고 클라이언트는 때때로 추상화의 내부 구현된 세부 사항에 직접 접근을 시도한다. 이런 식으로 추상화 원칙을 적절히 적용하지 않은 부작용 때문에 캡슐화를 위반할지도 모른다. 또 서로 관계가 있는 메서드 중 하나를 다른 어딘가에서 구현했기 때문에 응집력을 훼손하며, (정의상으로 클래스가 완벽하게 캡슐화할 책임을 요구하는) SRP를 위반한다. 이렇게 상호 보완적이거나 서로 관계가 있는 메서드들을 추상화에서 완벽하게 제공하지 않았기 때문에 이런 악취를 ‘불완전한 추상화’로 명명한다.

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