[Book]Clean Code 10장

클래스 체계

  • 정적(static), 공개(public) 상수가 맨 처음에 나온다.
  • 그 다음 정적 비공개(static private)변수가 나온다.
  • 그 다음 비공개 인스턴스가 나온다.
  • 공개 변수가 필요한 경우는 거의 없다.
  • 변수 목록 다음 공개 함수가 나온다.
  • 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다.
  • 추상화 단계가 순차적으로 내려간다.

캡슐화

  • 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만, 반드시 숨겨야 한다는 법칙도 없다.
  • 때로는 변수나 유틸리티 함수를 protected로 선언해 테스트 코드에 접근을 허용하기도 한다.
  • 같은 패키지 안에서 테스트 코드가 함수를 호출하거나 변수를 사용해야 한다면 그 함수나 변수를 protected로 선언하거나 패키지 전체로 공개한다.
  • 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다.

클래스는 작아야 한다!

  • 클래스는 작아야 한다! 기본 규칙!
  • 작명은 클래스 크기를 줄이는 첫 번째 관문이다.

단일 책임 원칙

  • 단일 책임 원칙은 클래스나 모듈을 변경할 이유가 하나뿐이어야 한다는 원칙이다.
  • 클래스는 책임, 즉 변경할 이유가 하나여야 한다.

응집도

  • 클래스는 인스턴스 변수 수가 작야한다.
  • 각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다.
  • 일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다.
  • 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높다.
  • 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미이다.
  • 응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개준다.

응집도를 유지하면 작은 클래스 여럿이 나온다.

  • 큰 함수를 작은 함수 여럿으로 쪼개다 보면 종종 작은 클래스 여럿으로도 쪼갤 기회가 생긴다. 그러면서 프로그램에 점점 더 체계가 잡히고 구조가 투명해진다.

변경하기 쉬운 클래스

  • 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다.

변경으로부터 격리

  • 상세한 구현에 의존하는 클라이언트 클래스는 구현이 바뀌면 위험에 빠진다. 그래서 우리는 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.

카테고리:

업데이트:

댓글남기기