Skip to main content

김시용

1. 📌 핵심 개념 정리

✅ 요약하기

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

  1. JUnit 프레임워크
    JUnit 프레임워크 중 문자열 비교 오류를 파악할 때 유용한 ComparisonCompactor 모듈을 개선해나가는 내용을 단계별로 보여준다.

  1. 테스트 코드 작성
    개선하고자 하는 모듈에 대한 코드 커버리지가 100%인 테스트 코드를 작성한다.
    -> 테스트 케이스가 모듈의 전체 내용을 실행한다는 의미다.

  1. 개선 시작
    보이스카우트 규칙에 따라 기존보다는 깨끗하게 코드를 개선해야 한다.
    1. 변수 이름 변경 : 변수 이름에 범위를 명시할 필요가 없다.
      fExpected, fActual -> expected, actual
    2. 조건문 캡슐화 : 의도 명확하게 하기
      if(expected == null || actual == null || areStringEqual()) -> if(shouldNotCompact())
    3. 조건문에 긍정문 사용 : 부정문은 긍정문보다 약간 이해가 어렵기 때문
      sholudNotCompact() -> canBeCompacted()
    4. 함수 이름 변경 : 함수에 있는 기능들을 모두 나타내는 이름 사용
      compact() -> formatCompactedComparison()
    5. 함수 하나로 결합 : 함수 간의 숨겨진 시간적인 결합이 존재할 때 prefixIndex = findCommonPrefix(), suffixIndex = findCommonSuffix(prefixIndex) -> findCommonPrefixAndSuffix()
    6. 마무리 : 고쳐진 내용의 상황을 보고 더욱 적절한 변수명으로 변경 index -> length

2. 🤔 이해가 어려운 부분

🔍 질문하기

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

  1. 시간적인 결합
    • 어려웠던 부분
      hidden temporal coupling의 의미가 익숙하지 않다.
    • 궁금한 점
      Q. 정확히 어떤 상황을 나타내는 용어인가?
      A. "순서에 의존하는 코드인데, 그 의존성이 명시적으로 드러나 있지 않은 경우"를 말합니다. 즉, 어떤 메서드를 먼저 호출해야 다른 메서드가 제대로 동작하는데, 코드만 봐서는 그 순서를 알기 어렵고, 그 순서를 지키지 않으면 오류가 발생하는 상황을 말해요.

3. 📚 참고 사항

📢 논의하기

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

  1. 관련 자료 공유
    • 추가 자료
      관련 블로그 글이나 공식 문서 링크를 제공합니다.

  1. 논의하고 싶은 주제
    • 주제
      기존의 ComparisonCompactor 충분한거 같은데 개선을 하였다.
      개선의 이유를 어디서 찾은것인가?
    • 설명
      필요성에 의한 개선이 아니라 굳이 꼬치꼬치 따져가면서까지 개선을 해야하는가?