더북(TheBook)

3.6.4 리팩토링 제안

설계에서 미활용 추상화를 제거하는 리팩토링이 가장 단순하다. 하지만 API에서는 추상화 제거가 현실성이 없다. 여전히 이를 참조할 수도 있는 클라이언트 코드(또는 유산으로 남은 코드)가 있을 수 있기 때문이다. 이런 추상화에는 ‘더 이상 쓸모가 없음Obsolete’ 또는 ‘앞으로 사라짐Deprecated’이라고 표식을 붙여 새로운 클라이언트가 결코 사용해서는 안 된다는 사실을 명시적으로 언급해야 할지도 모른다.

 

예제 1을 위한 리팩토링 제안

sun.misc.Service 클래스는 java.util.ServiceLoader 클래스를 사용하여 대체할 수 있다. 모든 실용적인 목적에서 사실상 sun.misc.Service 클래스는 필요하지 않으므로 코드 기반에서 이것을 제거하는 리팩토링 방식을 제안한다. 실제로 sun.misc.Service는 JDK 원시 코드에서 제거해 왔으며, JDK 9에는 포함하지 않을 것이다.*

 

 


* 종결된 버그 보고서인 ‘JDK-8034776: Remove sun.misc.Service’는 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8034776을 참조하자.

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