스터디/클린코드(Clean Code)

[스터디] 클린코드 9장 (2022년 7월 20일)

눙엉 2022. 7. 28. 22:24

9장 단위 테스트

테스트하면 TDD가 떠오르는데 일단 공부해야 될 목록에 추가는 해두었지만...

그냥 테스트를 어떻게 하면 좋을지? 기준을 두고 읽어 보았다.

 

TDD 법칙 세 가지

  1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
  2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
  3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

 

깨끗한 테스트 코드 유지하기

테스트코드는 실제 코드 못지않게 깨끗하게 짜야한다.

클린 코드 책을 읽다 보면 모든 코드를 구분 없이 깨끗하게 짜야 되는 것 같다.

물론 당연한 말이지만... 그래도 책으로 한번 보면 더 각인된다고 해야 되나?

 

테스트는 유연성, 유지보수성, 재사용성을 제공한다.

테스트 케이스가 있으면 변경이 쉬워진다.

코드를 수정할 때는 여러 곳에서 사용되는 컴포넌트라 한 곳에서 수정하게 되면 다른 곳에서 에러가 발생하지 않을까

걱정 때문에 쉽게 고치지 못한 적이 있었다.

테스트 케이스가 있으면 조금 더 안전하게 수정할 수 있다고 하니 좋은 것 같다.

 

깨끗한 테스트 코드

깨끗한 테스트 코드를 만들기 위해 필요한 3가지

  1. 가독성
  2. 가독성
  3. 가독성

 

테스트 당 assert 하나

java를 사용하지 않아서 assert가 무엇인지 몰라서 먼저 찾아봤다.

assert란

첫 번째 인자로 boolean으로 평가되는 표현식 또는 값을 받아서 참이면 그냥 지나가고 거짓이면 assertionError 예외가 발생한다.

코드가 실행될 때 반드시 어떤 값 일지 확신하는 값, 범위 또는 확실한 클래스의 상태 등을
체크하여 프로그램의 신뢰성을 높이기 위해서 사용된다.

 

TEMPLATE MOTHOD 패턴

변하지 않는 기능은 슈퍼클래스에 만들어 두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 하는 패턴

 

테스트 당 개념 하나

이것저것 잡다한 개념을 연속으로 테스트하는 긴 함수는 피한다.

 

F.I.R.S.T

  • 빠르게: 테스트는 빨라야 한다.
  • 독립적으로: 서로 의존하면 안 된다.
  • 반복: 어떤 환경에서도 반복 가능해야 한다.
  • 자가검증: boolean 값으로 결과를 내야 한다.
  • 적시에: 적시에 작성해야 한다.

 

결론

테스트 코드는 실제 코드만큼 중요하다.

테스트라고 대충 하지 말고 실제 코드의 유연성, 유지보수성, 재사용성을 보존하고 강화하기 때문이다.

 

언제 TDD 공부할까..