[Effective Java] 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라.


[Effective Java] 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라.

상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라. 메서드를 재정의하면 어떤 일이 일어나는지를 정확히 정리해 문서로 남겨야 한다. 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 한다. 재정의 가능 메서드를 호출할 수 있는 모든 상황을 문서로 남겨야 한다. API 문서의 메서드 설명에 "Implementation Requirements"로 시작하는 절을 볼 수 있는데 메서드의 내부 동작 방식을 설명하는 것이다. 이 절은 메서드 주석에 @implSpec 태그를 붙여주면 java doc 도구가 생성해 준다. 하지만 @ImplSpec을 이용해서 문서를 작성하는 건 상속이 캡슐화를 해치기에 상속만 아니었다면 기술하지 않았어야 할 내부 구현 방식을 설명해서 좋은 API 문서를 작성하는 방법과 대치가 된다. 효율적인 하위 클래스를 큰 어려움 없이 만들 수 있게 하려면 클래스의 내부 동작 과정 중간에 끼어들 수 있는 hook을 잘 선별해 ...


#이펙티브 #이펙티브자바 #자바

원문링크 : [Effective Java] 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라.