더북(TheBook)

3.2.1 근거

객체 지향에는 실제 객체를 포착하여 추상화로 표현한다는 설립 원칙이 있다. 요소 기술인 도메인 엔티티 사상을 따라 문제 도메인에서 인식된 객체는 해법 도메인에서도 표현할 필요가 있다. 또 추상화를 표현하는 각 클래스는 데이터와 함께 관련된 메서드를 캡슐화해야 한다. 데이터가 다른 어딘가에 위치할 때 클래스로서 명시적인 함수나 프로시저 정의는 객체 지향 프로그래밍이기보다는 구조화된 프로그래밍의 미화된 형태라고 할 수 있다. 특히 연관된 데이터가 다른 곳에 위치할 때 연산이 하나만 있는 클래스는 ‘추상화’를 대표할 수 없다. 명백히 이는 추상화 원칙의 위반이다. 이런 클래스는 ‘상태’가 아니라 ‘동작’을 나타내므로, 이런 악취를 ‘명령 추상화’로 명명한다.

연산이 클래스로 바뀌면 설계에는 메서드가 하나만 있는 클래스가 늘어나 설계의 복잡성이 높아진다. 그뿐만 아니라 동일 데이터에서 동작하는 여러 메서드는 다양한 클래스로 분리되어 설계의 응집성이 줄어든다. 이런 이유로 명령 추상화 악취는 또한 캡슐화와 모듈화의 원칙을 위반한다.

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