개발관련 도서

리팩토링 스터디: 1.1 ~ 1.4

devMarco 2022. 9. 21. 09:42

리팩터링 2판 공부한 내용을 간단히 정리해보았습니다.

1.1 자, 시작해보자!


  • 예시 코드를 제시함
  • 극단의 공연 비용을 책정해주는 시스템

1.2 예시 프로그램을 본 소감


  • 프로그램이 새로운 기능을 추가하기 편한 구조가 아니면 → 먼저 기능을 추가하기 쉬운 형태로 리팩터링하고, 원하는 기능을 추가하기
  • 방을 먼저 치우고 새 가구배치를 하는 것과 동일
  • 수백 줄짜리 코드를 수정할 때, 먼저 프로그램의 작동 방식을 쉽게 알 수 있도록 여러 함수와 모듈로 재구성

1.3 리팩터링의 첫 단계


  • 리팩터링의 첫 단계는 코드 영역을 검사할 테스트 코드를 작성하는 것!!
  • 리팩터링에서 테스트의 역할은 중요하다
  • 리팩터링하기 전에 제대로 된 테스트부터 마련한다. 테스트는 반드시 자가진단하도록 만든다.
  • 원하는 내용을 소스코드와 테스트코드에 넣어두면 더블체크 역할을 하여 실수를 줄일 수 있음
  • 리팩터링에서 테스트의 역할이 매우 중요함

1.4 statement() 함수 쪼개기


  • 특정 코드 부분이 어떤 역할을 하는지 알 수 있도록 함수로 추출하는 것이 좋다. : 6.1절 함수 추출하기
  • 수정 후 컴파일 / 테스트하여 실수가 없는지 확인
  • 조금씩 수정하여 피드백 주기를 짧게 가져가는 습관이 재앙을 피하게 해줌
  • 변수명을 명확한 의미로 변경

  • aPerformance 등, 자바스크립트 같은 동적타입 언어를 사용시 타입이 드러나도록 네이밍함 ↔ 타입스크립트는 해당 없음. 타입이 있으므로 performance: Performance 정도로 사용할 수 있을듯 함
  • 필요없는 argument는 제거함( play는 playFor(aPerformance)로 추출 가능함 ): 7.4절 임시 변수를 질의 함수로 바꾸기

  • 6.4절 변수 인라인하기 적용( 37 ~ 39페이지 )
    • play → playFor(perf)로 인라인하기: 3번의 함수 사용이 발생하나, 성능에 큰 영향이 없고 성능 개선이 더 수월하다.
    • 추출 작업이 훨씬 쉬워진다. 유효범위를 씬경쓸 대상이 줄기 때문
    • 토론의 여지가 있음. 타입 정의를 명확히 하면 되지 않을까?


Uploaded by N2T