[클린 코드: Clean Code] 10장 클래스

devssun 2019. 9. 5. 22:22
728x90
반응형

오늘은 10장 클래스를 읽었습니다. 그동안 .. 거의 2-3주간 일도 있고, 피곤하기도 해서 책이나 블로그를 거의 못했네요

사이드 프로젝트는 뭐 할 게 없나 고민하기도 합니다

그거 보다 이론 공부가 필요하지만.. 여튼 오늘은 10장 입니다


10장 클래스

이 장에서는 깨끗한 클래스를 다룬다.

 

클래스 체계

표준 자바 관례에 따르면, 정적 공개 상수가 맨 처음에 나오고 이후로 정적 비공개 변수, 비공개 인스턴스 변수, 공개 함수, 비공개 함수 순으로 나온다. 추상화 단계가 순차적으로 내려간다

캡슐화

변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다

때때로 위의 것들을 protected로 선언해 테스트 코드에 접근을 허용하기도 한다. 하지만 그 전에 비공개 상태를 유지할 방법을 강구한다. 캡슐화를 풀어주는 결정은 최후의 수단이다

 

클래스는 작아야 한다!

첫째도 둘째도 클래스는 작아야한다.

- 클래스 이름은 해당 클래스 책임을 기술해야 한다. 간결한 이름이 떠오르지 않는다면 클래스 크기가 너무 커서 그렇다

 

단일 책임 원칙(Single Responsibility Principle, SRP)

- 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙

- SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다

- 많은 개발자는 자잘한 단일 책임 클래스가 많아지면 큰 그림을 이해하기 어려워진다고 우려한다. 규모가 어느 수준에 이르는 시스템은 논리가 많고도 복잡하다. 이런 복잡성을 다루려면 체계적인 정리가 필수다

- 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. 작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유도 하나다.

 

응집도(Cohension)

- 클래스는 인스턴스 변수 수가 작아야 한다

- 우리는 응집도가 높은 클래스를 선호한다. 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미이기 때문이다

 

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

- 큰 함수를 작은 함수 여럿으로 나누기만 해도 클래스 수가 많아진다.

- 몇몇 함수가 몇몇 변수만 사용한다면 독자적인 클래스로 분리할 수 있다.

=> 클래스가 응집력을 잃는다면 쪼개라!

 

변경으로부터 격리

- 테스트가 가능할 정도로 시스템의 결합도를 낮우면 유연성과 재사용성도 더욱 높아진다

- 결합도가 낮다는 소리는 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미다.

- 시스템 요소가 서로 잘 격리되어 있으면 각 요소를 이해하기도 더 쉬워진다.

- 이렇게 결합도를 최소로 줄이면 자연스럽게 또 다른 클래스 설계 원칙인 DIP를 따르는 클래스가 나온다. DIP는 클래스가 추상화에 의존해야 한다는 원칙이다.

 

반응형