CS/클린코드(cleancode)

12장. 창발성(emergence)

rachel_13 2022. 11. 28. 19:43

켄트 백이 제시한 4가지 규칙을 모두 시행하면 소프트웨어 설계 품질이 높아진다.

(중요도 순)

1. 모든 테스트를 실행한다.

2. 중복을 없앤다.

3. 프로그래머의 의도를 표현한다.

4. 클래스와 메서드 수를 최소로 줄인다.

 

단계1. 모든 테스트를 실행하라

설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다.

모든 테스트 케이스를 항상 통과하는 시스템을 '테스트가 가능한 시스템'이라고 부른다.

테스트 케이스를 만들고 반복해서 돌리면 저절로 낮은 결합도, 높은 응집력을 추구하는 객체 지향 방법론을 자기도 모르게 실천하고 있게 될 것이다.

 

단계2. 리팩토링

새롭게 추가하는 코드를 깔끔하게 정리 후, 테스트 케이스를 돌려본다.

테스트 케이스만 있다면, 우리는 결함도를 걱정하지 않아도 된다.

 

단계3. 중복 없애기

아마 이 책의 첫 장부터 계속해서 나오는 이야기다. 중복은 우리의 최대 적수다.

구현 중복도 중복의 한 형태이며, 비슷한 코드는 비슷하게 만들어주는 것의 예의다.

 

단계4. 표현하라

소스가 점차 방대해지면서, 유지 보수를 하는 사람이 코드를 처음 짰던 사람보다 문제를 깊이 이해할 가능성은 얼마나 될까?

거의 희박하다. 시스템이 복잡해지면서, 유지 보수자가 코드를 오해할 가능성이 점점 커진다.

이를 최소화하기 위해서 항상 명백하게 코드를 짜는 것에 신경 써야 한다.

좋은 이름을 선택하고, 함수 or 클래스의 크기를 줄이며, 표준 명칭을 사용해야 한다.

그리고 마지막으로 단위 테스트를 꼼꼼히 작성해야 한다. 단위 테스트는 '예제'와도 같으니까

 

단계5. 클래스와 메서드의 수를 최소한으로 해라.

목표 : 함수&클래스의 크기를 작게 유지하면서, 시스템 단위도 작게 유지하는 것 (후순위임을 명심하자)