Clean Code 제 9장. 클래스

최대 1 분 소요

클래스에 대한 이야기.

test

0. 주관적인 결론

  • 클래스는 작게, 작게, 그리고 작게…
  • 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.

1. 클래스 체계

표준 자바 관례에 따르면 아래와 같은 순서로 클래스를 작성한다.

  1. 정적 공개 상수
  2. 비공개 변수
  3. 배공개 인스턴스 변수
  4. 공개 함수
  5. 비공개 함수

2. 작은 클래스

클래스는 작아야 한다. 작게 만들기 어렵다다면 클래스가 가진 책임이 너무 크기 때문이다. 클래스의 이름이 모허한가? 그 이유도 클래스의 책임이 너무 크기 때문이다. 클래스는 책임을 하나만 가지고 있어야 한다. 이를 단일 책임 원칙이라 한다.

만약 클래스 설명에 만약(“if”), 그리고 (“and”), -며(“or”), 하지만(“but”)을 사용한다면 이 또한 책임을 너무 많이 가지고 있다는 의미다.

응집도

각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다. 일반적으로 메서가 변수를 더 많이 사용할후록 메서드의 클래스는 응집도가 더 높다.

이처럼 응집도가 가장 높은 클래스는 사실 바랍직하지 않지만 우리는 응집도가 높은 클래스를 선호한다. 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미이기 때문이다.

“함수를 작게, 매개변수 목록을 짧게”라는 전략을 따르다 보면 때때로 몇몇 메서드만 사용하는 인스턴스 변수가 아주 많아 짆다. 이는 새로운 클래스로 쪼개야 한다는 신호다.

응집도를 유지하면서 코드를 깨끗하게 만드는 방법은 무엇일까? 저자는 테스트 슈트 작성을 강조한다. 결국 테스트가 중요하다.