Getting Clean via Emergent Design
단순한 설계 규칙
1. 모든 테스트를 실행한다.
2. 중복을 없앤다.
3. 프로그래머 의도를 표현한다.
4. 클래스와 메서드 수를 최소로 줄인다.
단순한 설계 규칙을 따른다면
Simple Design Rule 1: Runs All the Tests
테스트가 가능한 시스템을 만들려고 애써라.
크기가 작고 목적 하나만 수행하는 SRP를 준수하는 클래스를 만들어라.
테스트 케이스를 많이 작성해라.
DIP와 같은 원칙을 적용하고 의존성 주입, 인터페이스, 추상화 등과 같은 도구를 사용해 결합도를 낮춰라.
테스트 케이스를 만들고 계속 돌려라
이 단순한 규칙은 시스템의 낮은 결합도와 높은 응집력으로 향하는 길이다.
Simple Design Rule 2: Refactoring
No Duplication
중복은 추가 작업, 추가 위험, 불필요한 복잡도를 뜻한다.
템플릿 메소드 패턴은 고차원 중복을 제거할 목적으로 자주 사용한다.
Expressive
개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉽고 결함이 줄어들고 유지보수 비용이 적게 든다.
함수와 클래스에 조금 더 시간을 투자하자.
더 나은 이름을 선택하고, 큰 함수를 작은 함수 여럿으로 나누고, 자신의 작품에 조금만 더 주의를 기울이자.
Minimal Classes and Methods
극단적으로 중복을 제거하고, 의도를 표현하고, SRP를 준수한다면 오히려 득보다 실이 많아진다.
목표는 함수와 클래스 크기를 작게 유지하면서 동시에 시스템 크기도 작게 유지하는 데 있다.
경험을 대신할 단순한 개발 기법은 없지만,
이 장에서 소개하는 단순한 설계 규칙을 따른다면 (오랜 경험 후에야 익힐) 우수한 기법과 원칙을 단번에 활용할 수 있다.
📖 느낀점
책을 읽으며 나중에 코드를 다시 읽을 사람이 결국 나일 것이다라는 문장이 있었다.
가끔 과거의 내가 짠 코드를 한참을 들여봐야 이해할 수 있을 때가 있다.
그런 면에서 오늘 읽은 챕터가 참 많이 와닿았다.
조금 더 주의를 기울여야겠다, 미래의 나를 위해서라도.