콘텐츠로 이동

리팩터링 2판 실전 강의 교재 — 12장 인덱스

무엇인가

Martin Fowler 리팩터링 2판(2018) 의 1~12장(예시·원칙·24 악취·테스트·카탈로그 보는 법·6~12장 카탈로그 약 66개 기법) 을 Java/Spring 백엔드 입문~중급 수강생용 강의 교재로 풀어 쓴 자료입니다. 총 약 5,000줄이며, 각 장은 다음 형식을 따릅니다.

    1. 도입 (학습 목표·큰 그림 ASCII·시그니처 비유·현업에서 왜 중요한가)
  • 본문 (각 절·기법 별 한 줄 정의 → 비유 → Before/After → 동기 → 절차 → 함정 → Spring 현업)
  • 종합 (결정 가이드 표 + 종합 체크리스트 + Q/A 분리 형식 퀴즈)
  • 다음 장 예고

→ 책 카드는 entity-refactoring입니다.

실습 환경과 장별 루틴

실습 환경(Java 17 + JUnit 5)과 5권 공통 루틴(읽기 → 빨강 → 초록 → 정련 → 기록)은 guide-java-book-study-lab에 있습니다. 리팩터링 강의의 핵심은 작은 변경 뒤 테스트이며, 1장 JavaScript 예제는 Node.js로 실행하거나 Java로 옮겨 따라 해도 됩니다.

12편 인덱스 — 각 장 본문으로 바로 진입

장 주제 본문
1장 리팩터링: 첫 번째 예시 (statement → 단계별 7번 변환) lecture-refactoring-ch1
2장 리팩터링 원칙 (정의·두 모자·이유·언제·YAGNI·성능) lecture-refactoring-ch2
3장 코드에서 나는 악취 (24개) lecture-refactoring-ch3
4장 테스트 구축하기 (자가 테스트·픽스처·경계 조건) lecture-refactoring-ch4
5장 카탈로그 보는 법 (형식·선정 기준) lecture-refactoring-ch5
6장 기본적인 리팩터링 (11) — 함수 추출 ★ / 변수 추출 ★ / 함수 선언 ★ / 단계 쪼개기 ★ lecture-refactoring-ch6
7장 캡슐화 (9) — 레코드·컬렉션·기본형→객체·클래스 추출·위임 숨기기 lecture-refactoring-ch7
8장 기능 이동 (9) — 함수 옮기기 ★·필드 옮기기·반복문 파이프라인·죽은 코드 lecture-refactoring-ch8
9장 데이터 조직화 (6) — 변수 쪼개기·파생→질의·참조↔값·매직 리터럴 lecture-refactoring-ch9
10장 조건부 로직 간소화 (7) — 보호 구문·조건부 로직→다형성 ★·특이 케이스 lecture-refactoring-ch10
11장 API 리팩터링 (13) — CQS ★·플래그 제거·생성자→팩터리·예외 변환 lecture-refactoring-ch11
12장 상속 다루기 (11) — 메서드/필드 올리고 내리기·서브클래스→위임 ★★ lecture-refactoring-ch12

→ 총 약 66개 리팩터링 + 24 악취, 약 5,000줄. 각 장에는 학습 목표·비유·Before/After 코드·절차·Spring 현업 예제·체크리스트·퀴즈가 포함됩니다.

강의 교재 형식 (일관된 5단)

## N장 — 제목

> 대상: Java/Spring 백엔드 입문~중급
> 형식: 개념 → 비유 → Before/After → 절차 → 함정 → 체크리스트 → 퀴즈
> 전제: Java 17+, Spring Boot 4.x (start.spring.io 기본값)

## 0. 이 장을 시작하기 전에
  0.1 학습 목표
  0.2 큰 그림 (ASCII 그림 + 비유)
  0.3 현업에서 왜 중요한가

## N.M 기법 이름 [★ 표시]
  ### 한 줄 정의
  ### 비유 — "..."
  ### Before / After (코드 쌍)
  ### 동기 (왜·언제)
  ### 절차 (작은 단계)
  ### 함정
  ### Spring 현업
  ### Effective Java / 오브젝트 연결

## N장 종합 정리
  ### 한눈에 보는 결정 가이드 (표)
  ### 종합 체크리스트 (코드 리뷰용)
  ### 종합 퀴즈 (Q/A 분리 — **Q.** 질문 + **A.** 답변)

## 다음 장 예고

시그니처 비유 (일관성)

  • 1장: 리팩터링은 요리하면서 틈틈이 정리하는 주방
  • 2장: 두 모자 = 요리사 모자 vs 청소부 모자
  • 3장: 24 악취는 주방의 신호 (음식이 상한 게 아니라 도구 정리 신호)
  • 4장: 자가 테스트는 공사장 안전 헬멧
  • 5장: 카탈로그 5단은 사전 사용 설명서
  • 6장: 기본 리팩터링은 칼·도마·계량컵
  • 7장: 캡슐화는 포장
  • 8장: 기능 이동은 주방 도구 자리 정리
  • 9장: 데이터 조직화는 주방 라벨 다시 붙이기
  • 10장: 조건문은 도시의 신호등
  • 11장: API는 식당 메뉴판 (한 번 인쇄 → 영원)
  • 12장: 상속은 가문

★ 별 표시한 핵심 리팩터링

Item 이름 왜 핵심
6.1 함수 추출 ★ 모든 리팩터링의 기본
6.3 변수 추출 ★ 의미 명시의 시작
6.5 함수 선언 바꾸기 ★ 이름 정리의 정석
6.11 단계 쪼개기 ★ 1장 핵심 변환
8.1 함수 옮기기 ★ 기능 편애·산탄총 수술 처방
10.4 조건부 로직 → 다형성 ★ OOP 핵심 직접 적용
11.1 CQS 분리 ★ 동시성·테스트·예측의 기반
12.10 서브클래스 → 위임 ★★ 상속 → 합성 전환
12.11 슈퍼클래스 → 위임 ★ 취약한 기반 클래스 회피

책 전체 6원칙 (12장 마지막에서 추출)

  1. 자가 테스트가 모든 리팩터링의 전제 (4장)
  2. 24 악취가 트리거 (3장)
  3. 이름·전제·절차가 있는 변경 (5장)
  4. 모든 리팩터링은 쌍 — 양방향 도구 (5장)
  5. CQS·불변 우선 (11·12장)
  6. 상속보다 합성 (12.10·12.11)

→ Effective Java의 6원칙, 오브젝트의 9 메시지와 결합하면 OO 설계의 큰 그림이 완성됩니다.

활용 가이드

목적 추천 진입점
입문~1년차 빠른 진입 1장(예시) → 3장(악취) → 6.1·6.5·8.1
코드 리뷰 어휘 각 장 끝의 "종합 체크리스트"
신입 교육 자료 1장 statement() 변환 + 각 기법 Before/After 발췌
인터뷰 준비 "종합 퀴즈" Q를 먼저 보고 A 가리기
자기 코드 진단 3장 24 악취로 자기 코드베이스 워크스루

위키 기존 페이지와의 연결

한계·주의

  • 사용자 강사용 내부 교재 성격입니다 — 인용·재배포 전에 확인합니다
  • Java 17+ 가정 — 각 장 본문의 전제 환경 표기는 Spring Boot 3.x이며, 현재 기준(Spring Boot 4.x)과 다른 부분은 조정해 읽습니다
  • 책 본문 자체는 raw에 보유하지 않습니다 — 교재 본문은 책의 직접 인용이 아닌 강의용 재구성입니다
  • 일부 절차는 책 원본보다 단순화되어 있을 수 있습니다 — 실무에 적용할 때는 책 본문을 직접 확인합니다

관련 페이지