클래스와 멤버의 접근 권한을 최소화하라

public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

변경 가능성을 최소화 하라

상속보다는 컴포지션을 사용하라

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

추상 클래스보다 인터페이스를 우선하라.

인터페이스를 구현하는 쪽을 생각해 설계하라

인터페이스는 타입을 정의하는 용도로만 사용하라

태그 달린 클래스보다는 클래스 계층 구조를 활용하라.

멤버 클래스는 되도록 static 으로 만들라

톱 레벨 클래스는 한 파일에 하나만 담으라