Skip to content

Latest commit

 

History

History
 
 

item19

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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


요약

상속용 클래스를 설계하기란 결코 만만치 않다. 클래스 내부에서 스스로를 어떻게 사용하는지 모두 문서로 남겨야 하며, 일단 문서화한 것은 그 클래스가 쓰이는 한 반드시 지켜야 한다. 그러지 안흥면 내부 구현 방식을 믿고 활용하 던 하위 클래스를 오작동하게 만들 수 있다. 다른 이가 효율 좋은 하위 클래스 를 만들 수 있도록 일부 메서드를 protected로 제공해야 할 수도 있다. 그러니 클래스를 확장해야 할 명확한 이유가 없다면, 상속을 금지하는 편이 나을 것이 다. 상속을 금지 하려면 클래스를 final로 선언하거나 생성자 모두를 외부에서 접근할 수 없도록 만들면 된다.


상속을 고려한 설계와 문서화

  1. 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 한다. (@implSpec : 자바 개발팀이 내부적으로 자바독의 커스텀태그 기능을 사용하는 규약)

  2. 클래스의 내부 동작 과정 중간에 끼어들 수 있는 훅을 잘 선별하여 protected메서드 형태로 공개해야 할 수도 있다.

  3. 상속용으로 설계한 클래스는 배포 전에 반드시 하위 클래스를 만들어 검증해야 한다.

  4. 상속용 클래스의 생성자는 직접적으로든 간접적으로든 재정의 가능 메서드를 호출해서는 안된다.

  5. 상속용으로 설계하지 않은 클래스는 상속을 금지한다.