[클린코드 완독스터디] TIL (2022.02.25)

yourjin·2022년 2월 27일
0

read.log

목록 보기
35/37
post-thumbnail

TIL (2022.02.25)

DAY 12

🔖 오늘 읽은 범위 : 15장, JUnit 들여다보기


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

이전 내용 복습
findCommonSuffix를 주의 깊게 살펴보면 숨겨진 시간적인 결합(hidden temporal coupling) 이 존재한다. 다시 말해, findCommandSuffixfindCommonPrefix가 prefixlndex를 계산한다는 사실에 의존한다. 만약 findCommonPrefixfindCommonSuffix를 잘못된 순서로 호출하면 밤샘 디버깅이라는 고생문이 열린다. 그래서 시간 결합을 외부에 노출하고자 findCommonSuffix를 고쳐 prefixlndex 를 인수로 넘겼다.*

  • 사실 이 방법이 썩 내키지는 않는다. prefixIndex를 인수로 전달하는 방식은 다소 자의적의다. 함수 호출 순서는 확실히 정해지지만 prefixIndex 가 필요한 이유는 설명하지 못한다.
  • findCommonPrefixfindCommonSuffix를 원래대로 되돌리고, findCommonPrefixAndSuffix 로 바꾸고, findCommonPrefixAndSuffix에서 가장 먼저 findCommonPrefix를 호출한다. 그러면 두 함수를 순서가 앞서 고친 코드보다 훨씬 더 분명해진다.
  • 불필요한 if문(있으나 마나 한 조건이 포함된 if문을 제거하고 구조를 다듬어 좀 더 깔끔하게 만들자.
  • 코드가 상당히 깔끔하다. 모듈은 일련의 분석 함수와 일련의 조합 함수로 나뉜다. 전체 함수는 위상적으로 정렬했으므로 각 함수가 사용된 직후에 정의된다. 분석 함수가 먼저 나오고 조합 함수가 그 뒤를 이어서 나온다.
  • 코드를 리펙터링 하다 보면 원래 했던 변경을 되돌리는 경우가 흔하다. 리펙터링은 코드가 어느 수준에 이를 때까지 수많은 시행착오를 반복하는 작업이기 때문이다.
  • 결론
    • 세상에 개선이 불필요한 모듈은 없다. 코드를 처음보다 조금 더 깨끗하게 만드는 책임은 우리 모두에게 있다.

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

  • JUnit 모듈을 살펴보며 가장 기억해야 할 내용은 마지막 결론에서 말한 “세상에 개선이 불필요한 모듈은 없다.” 인 것 같다. 이 문구를 보며, 이제 막 입사했을 때의 내가 생각이 났다. 나는 선배가 2주만에 개발했던 기능을 얼떨결에 혼자 맡게 되었다. 그때 당시에는 실무의 모든게 낯설고 심지어 개발 언어의 문법도 익숙하지 않던 터라, 내 목표는 최대한 선배가 개발해놓은 방식을 변경하지 않고 따르는 것이었다. 아무것도 모르는 나의 코드는 경력자인 선배의 것보다 당연히 부족할 것이라고 생각했다. 사실은 선배도 2주만에 그저 ‘동작’만 하는 코드를 작성한 것이었는데 말이다. 지금은 이 기능의 담당자가 된지 거의 1년이 되어간다. 그리고 지금의 코드는 추가되는 기능과 오류 처리가 계속해서 덧붙여져 내가 아니면 이해하기 힘든 코드가 된 것 같다. 이제 나는 선배의 코드가 곧 법이라고 생각하지 않는다. 그리고 이제는 보이스카우트 규칙을 진정으로 따라야 할 때가 왔다고 절실히 느낀다.

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

  • 분석 함수와 조합 함수

소감 3줄 요약

  • 함수 호출 순서 뿐만 아니라, 그렇게 나와야 하는 이유에 대해서도 코드로 설명할 수 있어야 한다.
  • 코드를 리펙터링 하다 보면 원래 했던 변경을 되돌리는 경우가 흔하다. 리펙터링은 코드가 어느 수준에 이를 때까지 수많은 시행착오를 반복하는 작업이기 때문이다.
  • 세상에 개선이 불필요한 모듈은 없다.
profile
make it mine, make it yours

0개의 댓글