Skip to main content

이정우

1. 📌 핵심 개념 정리

✅ 요약하기

각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.

  1. TDD 법칙 요약 내용가지
    1. 실패하는 단위 테스트를 작성할 떄까지 실제 코드를 작성하지 않는다.
    2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
    3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
  • 위 세가지 규칙을 따르면 발과 테스트가 대략 30초 주기로 묶인다.
  • 테스트 코드와 실제 코드가 함께 나올뿐더러 테스트 코드가 실제 코드보다 불과 몇 초에 나온다.
  • 하지만 과한 양의 테스트 코드는 관리 문제를 유발하기도 한다.
개선 전 코드

개선 전 코드의 문제점을 작성합니다.

  • 개선 후
개선 후 코드

개선 후의 코드에 대한 설명을 작성합니다.


  1. 깨끗테스트 요약코드 내용유지하기
  2. .
.
  • 지저분한 테스트 코드는 테스트를 하지 않는 것보다 못하다.
  • 실제 코드가 진화하면 테스트 코드 또한 변해야 한다.
    • 테스트 코드가 지저분 할 수록 변경이 어려워진다.
    • 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸린다.
    • 실제 코드 변경으로 기존 테스트 케이스가 실패하기 시작하면, 지저분한 코드로 인해 실패하는 테스트 케이스를 통과시키는 것은 더욱 어려워진다.
    • 때문에, 테스트 코드는 계속 증가하는 부담이 된다.
    • 결국 테스트 슈트를 폐기하지 않으면 안 되는 상황에 처한다.
    • 하지만 테스트 슈트가 없으면 시스템 이쪽을 수정해도 저쪽이 안전하다는 사실을 검증하지 못한다.
    • 결국 결함율이 높아지기 시작한다.
    • 의도치 않은 결함 증가는 개발자의 변경을 주저하게 만든다.
    • 결과적으로 코드가 망가지기 시작한다.
  • 테스트 코드는 실제 코드 못지 않게 중요하다.
  • 테스트는 유연성, 유지보수성, 재사용성을 제공한다.

  1. 깨끗한 테스트 코드
  • " 가독성 "
  • 가독성을 높이기 위해선 명료성, 단순성, 풍부한 표현력이 필요하다.
  • 테스트 코드는 최소의 표현으로 많은 것을 나타내야 한다.
  • 도메인에 특화된 테스트 언어 - DSL
    • 테스트를 구현하는 당사자와 테스트를 읽을 독자를 도와주는 테스트 언어
    • API 위에 함수와 유틸리티 구현 후 해당 함수와 유틸리티를 사용
    • 테스트 코드 구성, 해석이 쉽다.
  • 이중 표준
    • 테스트 API 코드에 적용하는 표준은 단순,간결,표현의 풍부가 중요하지만 실제 코드 만큼 효율적일 필요는 없다.

  1. 테스트당 assert 하나
  • assert 문이 하나인 함수는 결론이 하나이므로 코드를 이해하기 좋다.
  • 하지만 때로는 하나의 함수에 여러 assert 문을 넣는 순간도 존재.
  • 단지 assert 문의 개수는 최대한 줄이는 요약것이 내용좋다는 의견
  • 테스트당 개념 하나

  1. F.I.R.S.T.
  2. .
.
  • Fast
    • 테스트는 빠르게 돌아야 한다.
    • 자주 돌려야 하기 때문이다.
  • Independent
    • 각 테스트는 서로 독립적이어야 한다.
    • 실패의 원인을 명확하게 구분해야 하기 때문이다.
  • Repeatable
    • 테스트는 어떤 환경에서도 반복 가능해야 한다.
  • Self-Vaildating
    • 테스트는 bool 값으로 결과를 내야 한다. ( 성공 or 실패 )
    • 통과 여부 확인을 위해 로그 파일 읽지 않도록
  • Timely
    • 테스트는 적시에 작성해야 한다.
    • 실제 코드 작성 후 테스트 코드를 작성하면 테스트가 어렵다는 사실을 발견할 수도 있다.

2. 🤔 이해가 어려운 부분

🔍 질문하기

책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.

  1. 개념 또는 원칙의 이름
    • 어려웠던 부분
      도메인 특화 언어(DSL)
      • 특정 도메인에 국한 개념이사용하는 헷갈리거나언어로, 명확응용 프로그램 도메인 내의 특정 문제를 해결지 않았던 점을 구체적으로도록명합계되었습니다.
      • 궁금어느 도메인에서나 적용 가능
        범용 해당언어(General-purpose language)와는 반대되는 개념입니다.
      • 예를 들어 쇼핑몰 플랫폼을 개발한다고 가정했을 때, 비지니스 도메인에는 상품을 결제하고 배송처리와 같은 개념이 어떤 원리로 동작하는지, 실무에서 어떻게 활용되는지 등을 질문 형태로 정리합포함됩니다.

  1. 개념 또는 원칙의 이름
    • 어려웠던 부분
      .
    • 궁금한 점
      .

  1. 개념 또는 원칙의 이름
    • 어려웠던 부분
      .
    • 궁금한 점
      .

3. 📚 참고 사항

📢 논의하기

관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.

  1. 관련 자료 공유

  1. 논의하고 싶은 주제
    • 주제
      논의하고 싶은 내용을 간략히 정리합니다.
    • 설명
      논의하고 싶은 이유를 작성합니다.