꼭 필요한 일만 하기
좋은 질문: “이 클래스에서 제공하지 않아도 다른 곳에서 구현이 가능한가?”
빠지기 쉬운 함정: 편의 기능 함수를 추가해서 이 클래스를 사용하는 여러 곳에서 편하게 쓸 수 있게 하기
클래스에 기능이 추가될 때 함께 증가하는 것
관리해야할 상태
메소드간의 관계
예외 상황
사용자가 익혀야할 클래스 사용법의 양
새 기능에서 사용되는 다른 클래스에 대한 의존성
클래스의 역할 (다른 클래스와 역할이 충돌날 가능성)
클래스를 사용할 수 있는 문맥의 제약 (범용 툴에서 전용툴에 가까워 짐)
클래스가 하나의 일만 할 때의 장점은 여러 클래스를 상황에 맞게 조합해서 필요한 기능을 만들어낼 수 있다는 점이다. 마치 유닉스의 툴을 파이프로 연결하는 것만으로도 새로운 개발 없이도 많은 일이 가능해지는 것과 같다. 클래스가 하나 이상의 기능을 제공하기 시작하면 단기적으로는 편할지 모르겠으나 장기적으로는 조합에 제약이 생기고 변경되는 요구사항에 따라 수정과 추가 개발이 발생한다.