Book/클린코드

[클린코드] 17장 냄새와 휴리스틱 (주석, 환경, 함수, 자바, 이름, 테스트)

yo0oni 2023. 9. 21. 08:13

주석

  • 부적절한 정보
  • 쓸모 없는 주석
  • 중복된 주석
  • 성의 없는 주석
  • 주석 처리된 코드

 

환경

여러 단계로 빌드해야 한다

  • 빌드는 간단히 한 단계로 끝나야 한다.
  • 한 명령으로 전체를 체크아웃하여 빌드할 수 있어야 한다.

여러 단계로 테스트해야 한다

  • 모든 단위 테스트는 한 명령으로 돌려야 한다.
  • 그러한 방법이 빠르고 쉽고 명백하다.

 

 

함수

  • 너무 많은 인수
  • 출력 인수
  • 플래그 인수
  • 죽은 함수

위 4개는 최대한 피하는 것이 좋다.

 

 

자바

긴 import 목록을 피하고 와일드카드를 사용한다

import package.*;
  • 긴 import 목록은 읽기에 부담스럽다.
  • 사용하는 패키지를 간단히 명시하면 충분하다.

 

상수를 상속하지 않는다

  • 상수를 상속 계층 맨 위에 숨겨 상속하면 안 된다. (끔찍한 광행)
  • static import를 사용한다.

 

 

이름

서술적인 이름을 사용한다

  • 소프트웨어 가독성의 90%는 이름이 결정한다.
  • 그러므로 시간을 들여 현명한 이름을 선택하고 유효한 상태로 유지한다.

 

적절한 추상화 수준에서 이름을 선택한다

  • 구현을 드러내는 이름은 피한다.
  • 작업 대상 클래스나 함수가 위치하는 추상화 수준을 반영하는 이름을 선택한다.

 

명확한 이름

  • 함수나 변수의 목적을 명확히 밝히는 이름을 선택한다.
  • 길다는 단점을 서술성이 충분히 메꾼다.

 

긴 범위는 긴 이름을 사용한다

  • 이름이 짧은 변수나 함수는 범위가 길어지면 의미를 잃는다.
  • 이름 범위가 길수록 이름을 정확하고 길게 짓는다.

 

 

테스트

불충분한 테스트

  • 테스트 케이스는 잠재적으로 깨질 만한 부분을 모두 테스트해야 한다.
  • 테스트 케이스가 확인하지 않는 조건이나 검증하지 않는 계산이 있다면 잠재적 버그를 갖고 있는 것이다.

 

커버리지 도구를 사용한다

  • 커버리지 도구는 테스트가 빠뜨리는 코드를 알려준다.
  • 커버리지 도구를 사용하면 테스트가 불충분한 모듈, 클래스, 함수를 찾아준다.

 

사소한 테스트를 건너뛰면 안 된다

  • 사소한 테스트가 제공하는 문서적 가치는 구현에 드는 비용을 넘어선다.

 

경계 조건을 테스트한다

  • 경계 조건은 신경 써서 테스트해야 한다.
  • 중앙 조건은 올바르게 짜놓고 경계 조건에서 실수하는 경우가 흔하다.

 

버그 주변은 철저히 테스트한다

  • 버그는 서로 모이는 경향이 있다.
  • 한 함수에서 버그를 발견했다면 그 함수를 철저히 테스트하는 것이 좋다.

 

테스트는 빨라야 한다

  • 느린 테스트 케이스는 실행하지 않게 된다.
  • 테스트 케이스가 빠르게 돌아갈 수 있도록 구현한다.