창발(創發)이란 "떠오름" 이라는 사전적 의미를 갖고 있음.
창발적 설계로 깔끔한 코드를 구현하자
지키기만 하면 깨끗한 코드가 나오는, SRP나 DIP와 같은 원칙을 적용하기 쉬워지는, 우수한 설계의 창발성을 촉진하는 네 가지 단순한 규칙이 있다.
중요도 순으로 나열해 보겠다.
모든 테스트를 실행하라
- 테스트, 즉 검증이 불가능한 시스템은 절대 출시하면 안된다.
- SRP를 준수하거나 결합도를 낮출 수록 테스트가 더 쉽다.
- "테스트 케이스를 만들고 계속 돌려라" 라는 단순한 규칙을 지킨다면 낮은 결합도와 높은 응집력이라는, 객체 지향 방법론이 지향하는 목표를 저절로 달성한다.
이제 리팩토링을 시작한다. 테스트 케이스가 있으니까 코드를 정리하는데 두려움을 갖지 않아도 된다!
중복을 없애라
- 중복은 추가 작업, 추가 위험, 불필요한 복잡도를 뜻한다.
- 깔끔한 시스템을 만들기 위해 몇 줄이라도 중복을 제거하겠다는 의지를 가지자.
표현하라
소프트웨어 프로젝트 비용 중 대다수는 장기적인 유지보수에 들어간다.
유지보수 개발자가 시스템을 제대로 이해하기 위해 의도를 분명히 표현하자. 하나 해결했다고 바로 넘어가지 말고.
- 우선 좋은 이름을 선택한다.
- 함수와 클래스 크기를 가능한 줄인다.
- 표준 명칭을 사용한다.
- 단위 테스트 케이스를 꼼꼼히 작성한다.
클래스와 메서드 수를 최소로 줄여라
- 앞 규칙들을 극단으로 치달으면 득보다 실이 많아진다.
- 함수와 클래스 크기를 작게 유지하며, 동시에 시스템 크기도 작게 유지하자.
- 하지만 이 규칙은 우선순위가 낮다. 앞 규칙들이 더 중요하다.
결론
이 단순한 설계 규칙 네 가지를 따른다면 오랜 경험 후에야 익힐 우수한 기법과 원칙을 단번에 활용할 수 있다!
Reference
클린 코드: 애자일 소프트웨어 장인 정신 - 로버트 마틴 지음