더북(TheBook)

2.2.3 언어 제약

프로그래밍 언어에 내재된 결핍이 설계 악취를 이끌어 낸다. 예를 들어, 자바는 초기 버전에서 열거형을 지원하지 않았기에 프로그래머들은 클래스나 인터페이스를 사용하여 상수를 담아야 했다. 이런 제약으로 설계 과정에 불필요한 추상화 악취(3.5절 참조)가 등장했다. 또 다른 예로, JDK에 들어 있는 AbstractQueuedSynchronizerAbstractQueuedLongSynchronizer 클래스를 살펴보자. 두 클래스는 AbstractOwnableSynchronizer에서 직접 파생되었고, 메서드에서 지원하는 원시 타입(각각 intlong)이 다르다. 이런 제약으로 팩토링되지 않은 계층 악취(6.3절 참조)를 야기했다. 자바에서 제네릭 기능은 원시 타입을 지원하지 않으므로, 프로그램을 작성할 때 이런 코드 중첩을 제거하기는 불가능에 가깝다.

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