책/CleanCode

10장 클래스

kkkkkdddddhhhhh 2024. 1. 4. 21:03

클래스 체계

  1. public static 변수
  2. private static 변수
  3. private instance 변수 ( 저자는 public instance 변수는 거의 필요가 없다고함..)
  4. public method
  5. private method ( 주로 자신을 호출하는 함수 직후에 자리하는게 좋다고함

이렇게 클래스는 추상화 단계가 순차적으로 내려가기때문에 프로그램이 신문기사 처럼 읽힌다고..

 

캡슐화

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

protected 로 접근을 제어해 테스트 코드에 접근을 허용하기도함

 

클래스는 작아야한다.

저자는 클래스의 크기가 함수와 마찬가지로 작아야된다고 강하게 주장함.

그렇다면 얼마나 작아야하는가?

예시로 70개의 메서드를 가지고있는 클래스를 보여준다. 너무 크다.

 

클래스를 작게 만들기위해서는 책임을 기술해야한다. 작명이 클래스 크기를 줄이는 첫번째 관문 

이름에 Processor, manager, super 등 모호한 단어들이 들어간 클래스들은 여러 책임을 떠앉았다는 증거

 

단일책임 원칙을 지키자.

라고 하지만 실제 프로그래머들은 SRP를 잘 지키지않는다. 깨끗한 코드보다는 일단 잘 돌아가는 코드에 우선울 두기때문,

저자는 다목적의 클래스 몇개보다는 하나의 목적은 가진 여러개의 클래스가 더 바람직하다고함.

 

응집도가 높은 클래스.

멤버 변수를 작게해 응집도를 높이자.

응집도를 유지하면 자연스럽게 작은 클래스가 여럿 나오게된다.

 

결합도를 낮추자.

구체적인 구현을 하는 구현 클래스는 테스트 작성이 어렵다.

가령, 5분마다 환율을 받는 API있다고 할 때, 테스트에서 매번 달라진 환율을 검증하는것을 어렵다.

인터페이스 추상화를 통해 외부와의 격리로 클래스의 결합도를 낮추자.

 

 

 

 

' > CleanCode' 카테고리의 다른 글

12장 창발성  (0) 2024.01.06
8장 경계, 9장 단위테스트  (0) 2024.01.01
7장 오류처리  (0) 2023.12.31
6장 객체와 자료 구조  (0) 2023.12.16
5장 형식 맞추기  (0) 2023.12.14