CHAPTER 01 맛보기 예제
__원래의 프로그램
__리팩토링 첫 단계
__statement 메서드 분해와 기능 재분배
__가격 책정 부분의 조건문을 재정의로 교체
__고찰
CHAPTER 02 리팩토링 개론
__리팩토링은 무엇인가
__리팩토링은 왜 해야 하나
__리팩토링은 어떨 때 필요한가
__팀장에게 어떻게 말을 꺼내나
__리팩토링 관련 문제들
__리팩토링과 설계
__리팩토링과 성능
__리팩토링의 유래
CHAPTER 03 코드의 구린내
__중복 코드 Duplicated Code
__장황한 메서드 Long Method
__방대한 클래스 Large Class
__과다한 매개변수 Long Parameter List
__수정의 산발 Divergent Change
__기능의 산재 Shotgun Surgery
__잘못된 소속 Feature Envy
__데이터 뭉치 Data Clumps
__강박적 기본 타입 사용 Primitive Obsession
__switch 문 Switch Statements
__평행 상속 계층 Parallel Inheritance Hierarchies
__직무유기 클래스 Lazy Class
__막연한 범용 코드 Speculative Generality
__임시 필드 Temporary Field
__메시지 체인 Message Chains
__과잉 중개 메서드 Middle Man
__지나친 관여 Inappropriate Intimacy
__인터페이스가 다른 대용 클래스 Alternative Classes with Different Interfaces
__미흡한 라이브러리 클래스 Incomplete Library Class
__데이터 클래스 Data Class
__방치된 상속물 Refused Bequest
__불필요한 주석 Comments
CHAPTER 04 테스트 작성
__JUnit 테스트 프레임워크
__테스트 추가
CHAPTER 05 리팩토링 기법 카탈로그에 대해
__참조 검색
__리팩토링 기법의 성숙도
CHAPTER 06 메서드 정리
__메서드 추출 Extract Method
__메서드 내용 직접 삽입 Inline Method
__임시변수 내용 직접 삽입 Inline Temp
__임시변수를 메서드 호출로 전환 Replace Temp with Query
__직관적 임시변수 사용 Introduce Explaining Variable
__임시변수 분리 Split Temporary Variable
__매개변수로의 값 대입 제거 Remove Assignments to Parameters
__메서드를 메서드 객체로 전환 Replace Method with Method Object
__알고리즘 전환 Substitute Algorithm
CHAPTER 07 객체 간의 기능 이동
__메서드 이동 Move Method
__필드 이동 Move Field
__클래스 추출 Extract Class
__클래스 내용 직접 삽입 Inline Class
__대리 객체 은폐 Hide Delegate
__과잉 중개 메서드 제거 Remove Middle Man
__외래 클래스에 메서드 추가 Introduce Foreign Method
__국소적 상속확장 클래스 사용 Introduce Local Extension
CHAPTER 08 데이터 체계화
__필드 자체 캡슐화 Self Encapsulate Field
__데이터 값을 객체로 전환 Replace Data Value with Object
__값을 참조로 전환 Change Value to Reference
__참조를 값으로 전환 Change Reference to Value
__배열을 객체로 전환 Replace Array with Object
__관측 데이터 복제 Duplicate Observed Data
__클래스의 단방향 연결을 양방향으로 전환 Change Unidirectional Association to Bidirectional
__클래스의 양방향 연결을 단방향으로 전환 Change Bidirectional Association to Unidirectional
__마법 숫자를 기호 상수로 전환 Replace Magic Number with Symbolic Constant
__필드 캡슐화 Encapsulate Field
__컬렉션 캡슐화 Encapsulate Collection
__레코드를 데이터 클래스로 전환 Replace Record with Data Class
__분류 부호를 클래스로 전환 Replace Type Code with Class
__분류 부호를 하위클래스로 전환 Replace Type Code with Subclasses
__분류 부호를 상태/전략 패턴으로 전환 Replace Type Code with State/Strategy
__하위클래스를 필드로 전환 Replace Subclass with Fields
CHAPTER 09 조건문 간결화
__조건문 쪼개기 Decompose Conditional
__중복 조건식 통합 Consolidate Conditional Expression
__조건문의 공통 실행 코드 빼내기 Consolidate Duplicate Conditional Fragments
__제어 플래그 제거 Remove Control Flag
__여러 겹의 조건문을 감시 절로 전환 Replace Nested Conditional with Guard Clauses
__조건문을 재정의로 전환 Replace Conditional with Polymorphism