목차

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