김시용
1. 📌 핵심 개념 정리
✅ 요약하기
각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.
- JUnit 프레임워크
JUnit 프레임워크 중 문자열 비교 오류를 파악할 때 유용한 ComparisonCompactor 모듈을 개선해나가는 내용을 단계별로 보여준다.
- 테스트 코드 작성
개선하고자 하는 모듈에 대한 코드 커버리지가 100%인 테스트 코드를 작성한다.
-> 테스트 케이스가 모듈의 전체 내용을 실행한다는 의미다.
- 개선 시작
보이스카우트 규칙에 따라 기존보다는 깨끗하게 코드를 개선해야 한다.- 변수 이름 변경 : 변수 이름에 범위를 명시할 필요가 없다.
fExpected, fActual -> expected, actual
- 조건문 캡슐화 : 의도 명확하게 하기
if(expected == null || actual == null || areStringEqual())
->if(shouldNotCompact())
- 조건문에 긍정문 사용 : 부정문은 긍정문보다 약간 이해가 어렵기 때문
sholudNotCompact()
->canBeCompacted()
- 함수 이름 변경 : 함수에 있는 기능들을 모두 나타내는 이름 사용
compact()
->formatCompactedComparison()
- 함수 하나로 결합 : 함수 간의 숨겨진 시간적인 결합이 존재할 때
prefixIndex = findCommonPrefix(), suffixIndex = findCommonSuffix(prefixIndex)
->findCommonPrefixAndSuffix()
- 마무리 : 고쳐진 내용의 상황을 보고 더욱 적절한 변수명으로 변경
index
->length
- 변수 이름 변경 : 변수 이름에 범위를 명시할 필요가 없다.
2. 🤔 이해가 어려운 부분
🔍 질문하기
책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.
- 시간적인 결합
- 어려웠던 부분
hidden temporal coupling의 의미가 익숙하지 않다. - 궁금한 점
Q. 정확히 어떤 상황을 나타내는 용어인가?
A. "순서에 의존하는 코드인데, 그 의존성이 명시적으로 드러나 있지 않은 경우"를 말합니다. 즉, 어떤 메서드를 먼저 호출해야 다른 메서드가 제대로 동작하는데, 코드만 봐서는 그 순서를 알기 어렵고, 그 순서를 지키지 않으면 오류가 발생하는 상황을 말해요.
- 어려웠던 부분
3. 📚 참고 사항
📢 논의하기
관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.
- 관련 자료 공유
- 추가 자료
관련 블로그 글이나 공식 문서 링크를 제공합니다.
- 추가 자료
- 논의하고 싶은 주제
- 주제
기존의 ComparisonCompactor 충분한거 같은데 개선을 하였다.
개선의 이유를 어디서 찾은것인가? - 설명
필요성에 의한 개선이 아니라 굳이 꼬치꼬치 따져가면서까지 개선을 해야하는가?
- 주제