독서일지/클린 코드

클린 코드 독서일지 - Day 35

Sadie Kim 2023. 12. 10. 23:52

JUnit 들여다보기

리팩토링 과정

  • 함수 사용방식이 일관적이지 못한 부분 수정
    함수에서 마지막 두 줄은 변수를 반환하지만 첫째 줄과 둘째 줄은 반환값이 없음
    => 각각 함수를 변경해 무언가를 반환하도록 수정
  • 부정확한 멤버 변수 이름 변경
    prefix/suffix 변수가 실제로는 색인 위치를 나타내고 있으므로 각각 뒤에 -Index를 추가
  • 숨겨진 시간적인 결합 외부에 노출
    findCommonSuffix 함수는 findCommonPrefix가 prefixIndex를 계산한다는 사실에 의존
    => 만약 findCommonSuffix와 findCommonPrefix를 잘못된 순서로 호출하면 원인을 찾기 어려움
    => 시간 결합을 외부에 노출하고자 prefixIndex가 findCommonSuffix의 인수로 넘어가도록 수정
    => But, prefixIndex가 필요한 이유가 분명히 드러나지 않으므로 다시 되돌리고, findCommonSuffix를 findCommonPrefixAndSuffix라는 이름으로 바꾸고 내부에서 가장 먼저 findCommonPrefix를 호출하도록 수정
  • 제대로 된 정보를 담지 못한 변수명 및 로직 수정
    suffixIndex/prefixIndex가 실제로는 접미어/접두어 길이로 쓰이고 있었으므로, index를 length로 수정.
    또한 곳곳에 등장하던 +1을 제거하고 논리적으로 타당하도록 수정
  • 불필요한 if문 제거
    if문을 주석 처리하고 테스트를 돌렸을 때 통과하므로 불필요한 코드임을 알 수 있음.

결론

코드를 깔끔하게 리팩터링함.
코드를 리팩토링하다 보면 원래 했던 변경을 되돌리는 경우가 흔하다.
=> 코드가 어느 수준에 이를 때까지 수많은 시행착오를 반복하는 작업이 리팩토링.