
클래스를 정의하는 표준 자바 관례에 따르면 가장 먼저 변수 목록이 나온다.
정적 공개 상수가 있다면 맨처음에 나오고 정적 비공개 변수가 나오면 비공개 인스턴스 변수가 나온다. 공개 변수가 핑료한 경우는 거의 없다.
프로그램은 신문 기사처럼 릭힌다.
캡슐화
변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다
하지만 비공개 상태를 유지한 온갖 방법을 강구해야한다.
캡슐화를 풀어주는 결정은 언제나 초후의 수단이다.
클래스는 작아야한다.
클래스 이름은 해당 클래스 책임으 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다.
단일책임 원칙(SRP)
클래스는 책임 즉 변경할 이유가 하나여야한다.
응집도
클래스는 인스턴스 변수가 작아야한다. 각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야하낟.
응집도를 유지하면 작은 클래스 여럿이 나온다.
큰 함수를 작은 함수 여럿으로 나누기만 해도 클래스 수가 많아진다.
대다수 시스템은 지속적인 변경이 가해진다. 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다.
변경으로부터 격리
인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.
상세한 구현에 의존하는 코드는 테스트가 어렵다.
테스트가 가능할 정도로 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다.