공개 인터페이스 식별
- 클래스를 설계할 때 가장 중요한 문제는 공개 인터페이스를 최소한으로 유지하는 것이다.
- 최소 공개 인터페이스를 제공하면 클래스가 가장 간결해진다.
- 개발자가 상속을 사용해 행위를 추가하기 보다는 인터페이스를 사용해 행위를 추가해야 한다.
- 캡슐화의 주요 지침 - 모든 필드가 비공개일 것
튼튼한 생성자나 소멸자가 되게 설계하기
- 자바는 garbage collector 메커니즘으로 자동으로 메모리를 회수함.
- c++은 수동으로 해줘야 함(메모리 누수 발생 가능)
클래스에 대한 오류 처리 설계
- 오류가 발생하면 시스템은 사용자의 중요한 데이터를 잃지 않게 스스로 오류를 처리한 뒤에 다시 동작할 수 있어야 하고, 최소한 정상적으로 멈춰야 한다.
클래스 문서화 및 주석 사용
- 설계 과정을 신중하게 문서화해야 한다.(유지보수 및 확장, 협업에 유리함)
- 과한 주석은 좋지 않다.
협동할 수 있는 객체로 만들기
클래스는 서로 상호작용 하도록 설계하자.
재사용을 고려한 설계
클래스를 다양한 시스템에서 사용할 수 있게 하려면 자사용할 일을 염두에 두고 클래스를 설계해야 한다.
확장성을 고려한 설계
- 상속 가능성을 고려하여 클래스를 설계하자.
- 클래스는 확장은 가능해도 수정은 불가능하게 설계해야 한다.