리팩터링 2판

리팩터링 2판

마틴 파울러의 리팩터링 카탈로그를 장별로 정리한 실전 노트.

마틴 파울러의 『리팩터링 2판』을 읽으며 장(章) 단위로 요약과 실천 포인트를 정리했습니다. 클린 코드가 “무엇이 좋은 코드인가”였다면, 이 책은 “어떻게 거기로 가는가”의 카탈로그입니다.

Contents

  1. 01
    1장 리팩터링: 첫 번째 예시연극 공연료 청구서 예제 하나로 리팩터링의 전 과정을 따라간다. 함수 추출, 임시 변수를 질의 함수로, 단계 쪼개기, 다형성까지 구조가 서서히 드러나는 여정.
  2. 02
    2장 리팩터링 원칙리팩터링의 정의(명사/동사), 두 개의 모자, 하는 이유와 시점, 하지 말아야 할 때, 내부 품질이 곧 속도라는 경제적 근거, 성능과 YAGNI와의 관계까지.
  3. 03
    3장 코드에서 나는 악취리팩터링이 필요한 신호 24가지 전체를 그룹으로 정리하고, 대표 악취들은 before/after 코드와 처방 기법까지 붙였다. 기이한 이름, 중복 코드, 긴 함수, 긴 매개변수, 뒤엉킨 변경/산탄총 수술, 기능 편애, 데이터 뭉치, 기본형 집착, 반복되는 switch.
  4. 04
    4장 테스트 구축하기리팩터링의 전제 조건인 자가 테스트 코드를 다룬다. 생산 계획 예제로 Mocha/Chai 테스트를 쌓아 가며, 실패해야 할 때 실패하는 테스트·경계 조건·위험한 곳 집중·픽스처 격리를 익힌다.
  5. 05
    5장 리팩터링 카탈로그 보는 법6장부터 이어지는 리팩터링 카탈로그의 표기 형식을 설명한다. 이름·개요·배경·절차·예시의 다섯 항목과, 절차를 최대한 잘게 쪼갠다는 철학.
  6. 06
    6장 기본적인 리팩터링가장 자주 쓰는 기본 기법 묶음. 함수/변수 추출·인라인, 함수 선언 바꾸기, 변수 캡슐화, 변수 이름 바꾸기, 매개변수 객체, 여러 함수를 클래스/변환 함수로 묶기, 단계 쪼개기.
  7. 07
    7장 캡슐화모듈이 서로 드러내지 않아야 할 것을 다룬다. 레코드/컬렉션 캡슐화, 기본형을 객체로, 임시 변수를 질의 함수로, 클래스 추출/인라인, 위임 숨기기와 중개자 제거의 균형, 알고리즘 교체하기.
  8. 08
    8장 기능 이동요소를 다른 맥락으로 옮기는 기법을 다룬다. 함수/필드 옮기기, 문장을 함수로/호출한 곳으로 옮기기, 인라인 코드를 함수 호출로, 문장 슬라이드, 반복문 쪼개기, 반복문을 파이프라인으로, 죽은 코드 제거.
  9. 09
    9장 데이터 조직화데이터 구조를 다루는 기법. 변수 쪼개기, 필드 이름 바꾸기, 파생 변수를 질의 함수로, 참조를 값으로/값을 참조로(갱신 공유 여부가 기준), 매직 리터럴 바꾸기.
  10. 10
    10장 조건부 로직 간소화복잡한 조건문을 다루는 기법. 조건문 분해, 조건식 통합, 보호 구문, 다형성, 특이 케이스(Null 객체) 패턴, 어서션까지 before/after로 정리한다.
  11. 11
    11장 API 리팩터링모듈 사이 연결부를 다듬는 기법. 질의/변경 분리(CQS), 함수 매개변수화, 플래그 인수 제거, 객체 통째로 넘기기, 세터 제거, 생성자를 팩토리로, 명령/함수 전환, 오류 코드를 예외로/예외를 사전확인으로.
  12. 12
    12장 상속 다루기상속 계층을 다루는 기법. 메서드/필드 올리기·내리기, 생성자 본문 올리기, 타입 코드를 서브클래스로, 서브클래스 제거, 슈퍼클래스 추출, 계층 합치기, 서브클래스·슈퍼클래스를 위임으로. '상속 먼저, 위임은 탈출구'.