Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 8장 경계, 9장 단위 테스트
#clean_code
2년 전
810

오늘 TIL 3줄 요약

  • 외부 코드를 사용하는 학습 테스트를 작성해라.

  • 외부 코드는 ADAPTER 패턴 적용을 고려

  • 테스트 코드도 가독성이 중요하다.

  • FIRST

TIL (Today I Learned) 날짜

2022. 05. 09

오늘 읽은 범위

8장. 경계

9장. 단위 테스트

책에서 기억하고 싶은 내용을 써보세요.

  • 외부 코드 사용하기 (p.144)

    • Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열밖으로 노출되지 않도록 주의한다. (p. 146)

  • 경계 살피고 익히기 (p.146)

    • 학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다. (p.147)

  • 학습 테스트는 공짜 이상이다 (p.149)

    • 학습 테스트는 패키지가 예상대로 도는지 검증한다. (p.149)

  • 아직 존재하지 않는 코드를 사용하기 (p.150)

    • ADAPTER 패턴으로 API 사용을 캡슐화해 API가 바뀔 때 수정할 코드를 한곳으로 모았다. (p.151)

  • 깨끗한 경계 (p.151)

    • 소프트웨어 설계가 우수하다면 변경하는데 많은 투자와 재작업이 필요하지 않다. (p.151)

  • TDD 법칙 세 가지 (p.155)

    • 1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.

    • 2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.

    • 3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

  • 깨끗한 테스트 코드 유지하기 (p.156)

    • 테스트 코드는 실제 코드 못지 않게 중요하다. (p.157)

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

    • 테스트 케이스가 없다면 모든 변경이 잠정적인 버그다. (p.157)

  • 깨끗한 테스트 코드 (p.158)

    • 가독성, 가독성, 가독성 (p. 158)

    • 도메인에 특화된 테스트 언어 (p.161)

    • 이중 표준 (p.161)

      • 실제 환경에서는 절대로 안 되지만 테스트 환경에서는 전혀 문제 없는 방식이 있다. 대개 메모리나 CPU 효율과 관련 있는 경우다. (p.164)

  • 테스트당 assert 하나 (p.164)

    • assert 문이 단 하나인 함수는 결론이 하나라서 코드를 이해하기 쉽고 빠르다. (p.164)

    • 테스트당 개념 하나 (p.166)

    • "테스트 함수 하나는 개념 하나만 테스트하라" (p.167)

  • F.I.R.S.T. (p. 167)

    • Fast: 테스트는 빨라야 한다. (p.167)

    • Independent: 각 테스트는 서로 의존하면 안된다. (p.167)

    • Repeatable: 테스트는 어떤 환경에서도 반복 가능해야 한다. (p.168)

    • Self-Validating: 테스트는 bool 값으로 결과를 내야 한다. (p.168)

    • Timely: 테스트는 적시에 작성해야 한다. (p.168)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 학습 테스트 코드를 작성하며 라이브러리 사용법을 익히는 기법이 신선하고 유용했다.

  • 오늘 읽은 내용에도 Adapter 패턴과 Template 메소드 패턴등 디자인 패턴에 대한 내용이 나왔다. 디자인 패턴을 다시 한번 리마인드 해야겠다.

  • TDD에 대한 글을 읽을 때마다 매번 테스트 코드부터 작성하는 TDD 법칙을 따라서 해야겠다고 느끼지만, 아직까지 TDD 법칙을 준수하면서 개발했던 적이 한번도 없는 것 같다. 다음 프로젝트는 TDD 준수해서 테스트 코드 작성하는 것도 고려하여 일정을 세우고 진행하보아야 겠다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • BUILD-OPERATE-CHECK 패턴, given-when-then 관례등 테스트 코드 작성시 사용하는 패턴과 관례

  • JAVA의 제너릭스? C++의 템플릿과 유사한 개념인듯 하다.

오늘 읽은 다른사람의 TIL

  • None