Clean Code
12장, 창발성
켄트 벡이 제시한 단순한 설계 규칙 네가지가 소프트웨어 설계 품질을 크게 높여준다.
1. 모든 테스트를 실행한다.
2. 중복을 없앤다.
3. 프로그래머 의도를 표현한다.
4. 클래스와 메서드 수를 최소로 줄인다.
1. 단순 설계 규칙 1: 모든 테스트를 실행하라
- 설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다. 그러나 시스템이 의도한 대로 돌아가는지 검증할 간단한 방법이 없다면?
- 테스트가 불가능한 시스템은 검증도 불가능하다. 테스트가 가능한 시스템을 만들려고 하면 설계 품질이 높아진다.
- SRP(단일 책임 원칙)를 준수하는 클래스는 테스트가 훨씬 쉽다.
- 결합도가 높으면 테스트케이스를 작성하기 어려움 > 테스트케이스에 맞춰 만들면 결합도가 낮고 응집력이 높아짐
2. 단순한 설계 규칙 2~4: 리팩터링
- 코드를 추가할 때마다 설계를 조감
> 새로운 코드가 설계 품질을 낮추면 깔끔하게 정리한 후, 테스트케이스를 돌려서 기존 기능을 깨뜨리지 않았다는 사실을 확인
- 테스트케이스가 있으면 코드를 정리하면서 시스템이 깨질 걱정X
3. 중복을 없애라
- 중복 = 추가 작업, 추가 위험, 풀필요한 복잡도
- 구현 중복
Bad Code
int size() {}
boolean isEmpty() {}
Clean Code
boolean isEmpty(){
return 0 == size();
}
- Template Method 패턴을 적용하여 중복 제거
4. 표현하라
- 소프트웨어 프로젝트 비용의 대다수는 장기적인 유지보수에 들어감
1) 좋은 이름 선택하기
2) 함수와 클래스 크기를 최대한으로 줄임
3) 표준 명칭 사용
- 디자인 패턴: 의사소통과 표현력 강화가 목적
4) 단위테스트케이스를 꼼꼼히 작성
- 클래스의 기능이 한 눈에 들어옴
5. 클래스와 메서드 수를 최소한으로 줄임
그러나 중복제거, 의도 표현, SRP 준수를 너무 지키면 오히려 코드가 더 어려워짐
'IT > 책' 카테고리의 다른 글
[Clean Code] 14장, 점진적인 개선 (0) | 2021.11.14 |
---|---|
[Clean Code] 13장, 동시성 (0) | 2021.11.14 |
[Clean Code] 11장, 시스템 (0) | 2021.11.07 |
[Clean Code] 10장, 클래스 (0) | 2021.11.07 |
[Clean Code] 9장, 단위 테스트 (0) | 2021.11.07 |