Community

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

← Go back
TIL Assignment #12 (2022-03-06)
#clean_code
2년 전
455

오늘 TIL 3줄 요약

  • 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하자.

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

  • 개념 당 assert 문 수를 최소로 줄이고, 테스트 함수 하나는 개념 하나만 테스트하라.

TIL (Today I Learned) 날짜

  • 2022. 03. 06.일

오늘 읽은 범위

  • 8장. 경계 ~ 9장. 단위 테스트

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

  • Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 한다. Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다. (p146)

  • 학습 테스트는 공짜 이상이다. 투자하는 노력보다 얻는 성과가 더 크다. (p149)

  • TDD 법칙 (p155)

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

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

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

  • 깨끗한 테스트 코드를 만들려면? 세 가지가 필요하다. 가독성, 가독성, 가독성. ... 테스트 코드에서 가독성을 높이려면? 명료성, 단순성, 풍부한 표현력이 필요하다. 테스트 코드는 최소의 표현으로 많은 것을 나타내야 한다. (p158)

  • 나는 '단일 assert문'이라는 규칙이 훌륭한 지침이라 생각한다. ... 하지만 때로는 주저 없이 함수 하나에 여러 assert문을 넣기도 한다. 단지 assert문 개수는 최대한 줄여야 좋다는 생각이다. (p165)

  • F.I.R.S.T : 깨끗한 테스트가 따르는 다섯 가지 규칙 (p167)

    1. 빠르게(Fast) : 테스트는 빨리 돌아야 한다.

    2. 독립적으로(Independent) : 각 테스트는 서로 의존하면 안 된다.

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

    4. 자가검증하는(Self-Validating) : 테스트는 부울 값으로 결과를 내야 한다. 성공 아니면 실패다.

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

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

  • 나는 테스트를 안 하느니 지저분한 테스트 코드라도 있는 편이 좋다고 생각했었다. 하지만 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 오래 걸리기 때문에, 지저분한 테스트 코드를 내놓는 것은 테스트를 안 하는 것보다 오히려 더 못하다는 것을 배울 수 있었다. 테스트 코드가 방치되어 망가지면 실제 코드도 망가지기 때문에, 테스트 코드를 깨끗하게 유지하도록 노력해야겠다.

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

  • (p145) 제네릭스 : 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능으로 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성이 높아지고, 형변환의 번거로움이 줄어든다.

  • (p147) 학습테스트 : 자신이 만들지 않은 프레임워크나 다른 개발팀에서 만들어 제공한 라이브러리에 대해 테스트 하는 것으로 기능에 대한 검증이 목적이 아니라, 자신이 사용할 API나 프레임워크의 기능을 테스트하면서 사용법을 익히려는 것이다.

  • (p148) log4j 버그 : 가장 널리 사용되는 웹 서버 소프트웨어인 Apache의 취약점

오늘 읽은 다른사람의 TIL