본문 바로가기

스터디/리팩토링

리팩토링 스터디

[ 개인 torchpad Wiki ]

리팩토링 - 기간 :  2017.07.05 ~ 진행중(주 수요일) - 인원 : 4명 - 장소 : 사내

- 개념

CHAPTER 03 코드의 구린내
1.중복 코드 Duplicated Code
1.장황한 메서드 Long Method
2.방대한 클래스 Large Class
2.과다한 매개변수 Long Parameter List
3.수정의 산발 Divergent Change
3.기능의 산재 Shotgun Surgery
4.잘못된 소속 Feature Envy
4.데이터 뭉치 Data Clumps
5.강박적 기본 타입 사용 Primitive Obsession
5.switch 문 Switch Statements
6.평행 상속 계층 Parallel Inheritance Hierarchies
6.직무유기 클래스 Lazy Class
7.막연한 범용 코드 Speculative Generality
7.임시 필드 Temporary Field
8.메시지 체인 Message Chains
8.과잉 중개 메서드 Middle Man
9.지나친 관여 Inappropriate Intimacy
9.인터페이스가 다른 대용 클래스 Alternative Classes with Different Interfaces
10.미흡한 라이브러리 클래스 Incomplete Library Class
10.데이터 클래스 Data Class
11.방치된 상속물 Refused Bequest
11.불필요한 주석 Comments

CHAPTER 06 메서드 정리
12.메서드 추출 Extract Method
12.메서드 내용 직접 삽입 Inline Method
13.임시변수 내용 직접 삽입 Inline Temp
13.임시변수를 메서드 호출로 전환 Replace Temp with Query
14.직관적 임시변수 사용 Introduce Explaining Variable
14.임시변수 분리 Split Temporary Variable
15.매개변수로의 값 대입 제거 Remove Assignments to Parameters
15.메서드를 메서드 객체로 전환 Replace Method with Method Object
16.알고리즘 전환 Substitute Algorithm

CHAPTER 07 객체 간의 기능 이동
17.메서드 이동 Move Method
17.필드 이동 Move Field
18.클래스 추출 Extract Class
18.클래스 내용 직접 삽입 Inline Class
19.대리 객체 은폐 Hide Delegate
19.과잉 중개 메서드 제거 Remove Middle Man
20.외래 클래스에 메서드 추가 Introduce Foreign Method
20.국소적 상속확장 클래스 사용 Introduce Local Extension

CHAPTER 08 데이터 체계화
21.필드 자체 캡슐화 Self Encapsulate Field
21.데이터 값을 객체로 전환 Replace Data Value with Object
22.값을 참조로 전환 Change Value to Reference
22.참조를 값으로 전환 Change Reference to Value
23.배열을 객체로 전환 Replace Array with Object
23.관측 데이터 복제 Duplicate Observed Data
24.클래스의 단방향 연결을 양방향으로 전환 Change Unidirectional Association to Bidirectional
24.클래스의 양방향 연결을 단방향으로 전환 Change Bidirectional Association to Unidirectional
25.마법 숫자를 기호 상수로 전환 Replace Magic Number with Symbolic Constant
25.필드 캡슐화 Encapsulate Field
26.컬렉션 캡슐화 Encapsulate Collection
26.레코드를 데이터 클래스로 전환 Replace Record with Data Class
27.분류 부호를 클래스로 전환 Replace Type Code with Class
27.분류 부호를 하위클래스로 전환 Replace Type Code with Subclasses
28.분류 부호를 상태/전략 패턴으로 전환 Replace Type Code with State/Strategy
28.하위클래스를 필드로 전환 Replace Subclass with Fields

CHAPTER 09 조건문 간결화
29.조건문 쪼개기 Decompose Conditional - 2018.05.09 재시작
29.중복 조건식 통합 Consolidate Conditional Expression
30.조건문의 공통 실행 코드 빼내기 Consolidate Duplicate Conditional Fragments - 2018.05.16
30.제어 플래그 제거 Remove Control Flag
31.여러 겹의 조건문을 감시 절로 전환 Replace Nested Conditional with Guard Clauses - 2018.05.23
31.조건문을 재정의로 전환 Replace Conditional with Polymorphism
32.Null 검사를 널 객체에 위임 Introduce Null Object - 2018.05.30
32.어설션 넣기 Introduce Assertion

CHAPTER 10 메서드 호출 단순화
33.메서드명 변경 Rename Method
33.매개변수 추가 Add Parameter
33.매개변수 제거 Remove Parameter
34.상태 변경 메서드와 값 반환 메서드를 분리 Separate Query from Modifier
34.메서드를 매개변수로 전환 Parameterize Method
34.매개변수를 메서드로 전환 Replace Parameter with Explicit Methods
35.객체를 통째로 전달 Preserve Whole Object
35.매개변수 세트를 메서드로 전환 Replace Parameter with Method
35.매개변수 세트를 객체로 전환 Introduce Parameter Object
36.쓰기 메서드 제거 Remove Setting Method
36.메서드 은폐 Hide Method
37.생성자를 팩토리 메서드로 전환 Replace Constructor with Factory Method
37.하향 타입 변환을 캡슐화 Encapsulate Downcast
38.에러 부호를 예외 통지로 교체 Replace Error Code with Exception
38.예외 처리를 테스트로 교체 Replace Exception with Test

CHAPTER 11 일반화 처리
39.필드 상향 Pull Up Field
39.메서드 상향 Pull Up Method
39.생성자 내용 상향 Pull Up Constructor Body
39.메서드 하향 Push Down Method
39.필드 하향 Push Down Field
40.하위클래스 추출 Extract Subclass
40.상위클래스 추출 Extract Superclass
40.인터페이스 추출 Extract Interface
41.계층 병합 Collapse Hierarchy
41.템플릿 메서드 형성 Form Template Method
42.상속을 위임으로 전환 Replace Inheritance with Delegation
42.위임을 상속으로 전환 Replace Delegation with Inheritance

CHAPTER 12 복합 리팩토링
43.상속 구조 정리 Tease Apart Inheritance
43.절차 코드를 객체로 전환 Convert Procedural Design to Objects
44.도메인 로직을 표현과 분리 Separate Domain from Presentation
44.계층구조 추출 Extract Hierarchy


URL : https://torchpad.com/workspace/wikis/dj6316/pages/Home