[클린 코드 읽고 정리해두고 다시 보기] 창발성

inho ha·2024년 9월 22일
0

창발적 설계로 깔끔한 코드를 구현하자

  • 켄트 벡이 제시한 단순한 설계 규칙 4가지는 소프트웨어 설계 품질을 크게 높여준다.
    1. 모든 테스트를 실행한다.
    1. 중복을 없앤다.
    1. 프로그래머 의도를 표현한다.
    1. 클래스와 메서드 수를 최소로 줄인다.

단순한 설계 규칙 1: 모든 테스트를 실행하라

  • 모든 테스트를 실행하기 위해서는 테스트 케이스를 작성해야한다.
  • 테스트가 가능한 시스템을 만들려고 애쓰면 설계 품질이 높아진다.
  • SRP를 준수하여 하나의 책임만 가지만 클래스가 테스트 하기 쉽다.
  • DIP, DI, 인터페이스, 추상화 등과 같은 도구로 결합도를 낮춘 클래스가 테스트 하기 쉽다.
  • 테스트 케이스를 작성하고 실행하다보면 낮은 결합도와 높은 응집력이라는 객체 지향 방법론이 지향하는 목표를 달성할 수 있다.

단순한 설계 구칙 2~4: 리팩터링

  • 작성한 테스트 케이스를 사용해서 기존 기능을 깨뜨리지 않는지 확인하면서 리팩토링을 진행한다.

중복을 없애라

  • 공통적인 코드를 새 메서드로 뽑아내고, 클래스가 SRP를 위반하면 메서드를 다른 클래스로 옮겨라.
  • TEMPLATE METHOD 패턴으로 고차원 중복을 제거하라.

표현하라

  • 코드를 작성하는 동안에는 코드를 이해하고 있지만, 유지보수시에 다른 사람이 보거나 오랜 시간 뒤에 보면 이해하기 어렵다.
  • 좋은 이름을 선택하라.
  • 함수와 클래스 크기를 가능한 줄여라. 작으면 이름 짓기 쉽고, 구현하기 쉽고, 이해하기 쉽다.
  • 표준 명칭을 사용하라. 표준 패턴 사용시에 클래스 이름에 패턴 이름을 넣어 설계 의도를 이해하기 쉽게 하라
  • 단위 테스트 케이스를 꼼꼼하게 작성하라. 테스트 케이스는 일종의 기능 명세 역할을 해준다.

클래스와 메서드 수를 최소로 줄여라

  • 클래스와 메서드의 크기를 줄이기 위해 과도하게 많은 클래스와 메서드를 만들면 이득보다 손해가 클 수 있다.
profile
inho ha / ian(swatchon) / iha(42seoul)

0개의 댓글