Chapter05. 리팩토링 종류

김신영·2023년 7월 15일
0

Refactoring

목록 보기
5/12
post-thumbnail

리팩터링 목록

리팩터링 기법리팩터링 기법(영문)참조
값을 참조로 바꾸기Change Value to Reference9.5
객체 통째로 넘기기Preserve Whole Object11.4
계층 합치기Collapse Hierarchy12.9
기본형을 객체로 바꾸기Replace Primitive with Object7.3
단계 쪼개기Split Phase6.11
레코드 캡슐화하기Encapsulate Record7.1
매개변수 객체 만들기Introduce Parameter Object6.8
매개변수를 질의 함수로 바꾸기Replace Parameter with Query11.5
매직 리터럴 바꾸기Replace Magic Literal9.6
메서드 내리기Push Down Method12.4
메서드 올리기Pull Up Method12.1
명령을 함수로 바꾸기Replace Command with Function11.10
문장 슬라이드하기Slide Statements8.6
문장을 함수로 옮기기Move Statements into Function8.3
문장을 호출한 곳으로 옮기기Move Statements to Callers8.4
반복문 쪼개기Split Loop8.7
반목문을 파이프라인으로 바꾸기Replace Loop with Pipeline8.8
변수 이름 바꾸기Rename Variable6.7
변수 인라인하기Inline Variable6.4
변수 쪼개기Split Variable9.1
변수 추출하기Extract Variable6.3
변수 캡슐화하기Encapsulate Variable6.6
생성자 본문 올리기Pull Up Constructor Body12.3
생성자를 팩터리 함수로 바꾸기Replace Constructor with Factory Method11.8
서브 클래스 제거하기Remove Subclass12.7
서브클래스 위임으로 바꾸기Replace Subclass with Delegate12.10
세터 제거하기Remove Setter Method11.7
수정된 값 반환하기Return Modified Value11.11
슈퍼클래스 추출하기Extract Superclass12.8
슈퍼클래스를 위임으로 바꾸기Replace Superclass with Delegate12.11
알고리즘 교체하기Substitue Algorithm7.9
Assertion 추가하기Introduce Assertion10.6
여러 함수를 변환 함수로 묶기Combine Functions into Transfrom6.10
여러 함수를 클래스로 묶기Combine Functions into Class6.9
예외를 사전확인으로 바꾸기Replace Exception with Precheck11.13
오류 코드를 예외로 바꾸기Replace Error Code with Exception11.12
위임 숨기기Hide Delegate7.7
인라인 코드를 함수 호출로 바꾸기Replace Inline Code with Function Call8.5
임시 변수를 질의 함수로 바꾸기Replace Temp with Query7.4
제어 플래그를 탈출문으로 바꾸기Replace Control Flag with Break10.7
조건문 분해하기Decompose Conditional10.1
조건문 로직을 다형성으로 바꾸기Replace Conditional with Polymorphism10.4
조건식 통합하기Consolidate Conditional Expression10.2
죽은 코드 제거하기Remove Dead Code8.9
중개자 제거하기Remove Middle Man7.8
중첩 조건문을 보호 구문으로 바꾸기Replace Nested Conditional with Guard Clauses10.3
질의 함수를 매개변수로 바꾸기Replace Query With Parameter11.6
질의 함수와 변경 함수 분리하기Separate Query From Modifier11.1
참조를 값으로 바꾸기Change Reference to Value9.4
컬렉션 캡슐화하기Encapsulate Collection7.2
클래스 인라인하기Inline Class7.6
클래스 추출하기Extract Class7.5
타입 코드를 서브클래스로 바꾸기Replace Type Code with Subclasses12.6
특이 케이스 추가하기Introduce Special Case10.5
파생 변수를 질의 함수로 바꾸기Replace Derived Variable with Query9.3
플래그 인수 제거하기Remove Flag Argument11.3
필드 내리기Push Down Field12.5
필드 올리기Pull Up Field12.2
필드 옮기기Move Field8.2
필드 이름 바꾸기Rename Field9.2
함수 매개변수화하기Parameterize Function11.2
함수 선언 바꾸기Change Function Declaration6.5
함수 옮기기Move Function8.1
함수 인라인하기Inline Function6.2
함수 추출하기Extract Function6.1
함수를 명령으로 바꾸기Replace Function with Command11.9

악취 제거 기법

악취탈취용 리팩터링 기법
가변 데이터변수 캡슐화하기, 변수 쪼개기, 문장 슬라이드하기, 함수 추출하기, 질의 함수와 변경 함수 분리하기, 세터 제거하기, 파생 변수를 질의 함수로 바꾸기, 여러 함수를 클래스로 묶기, 여러 함수를 변환 함수로 묶기, 참조를 값으로 바꾸기
거대한 클래스클래스 추출하기, 슈퍼클래스 추출하기, 타입 코드를 서브클래스로 바꾸기
기능 편애함수 옮기기, 함수 추출하기
기본형 집착기본형을 객체로 바꾸기, 타입 코드를 서브클래스로 바꾸기, 조건부 로직을 다형성으로 바꾸기, 클래스 추출하기, 매개변수 객체 만들기
기이한 이름함수 선언 바꾸기, 변수 이름 바꾸기, 필드 이름 바꾸기
긴 매개변수 목록매개변수를 질의 함수로 바꾸기, 객체 통째로 넘기기, 매개변수 객체 만들기, 플래그 인수 제거하기, 여러 함수를 클래스로 묶기
긴 함수함수 추출하기, 임시 변수를 질의 함수로 바꾸기, 매개변수 객체 만들기, 객체 통째로 넘기기, 함수를 명령으로 바꾸기, 조건문 분해하기, 조건부 로직을 다형성으로 바꾸기, 반복문 조깨기
내부자 거래함수 옮기기, 필드 옮기기, 위임 숨기기, 서브클래스를 위임으로 바꾸기, 슈퍼클래스를 위임으로 바꾸기
데이터 뭉치클래스 추출하기, 매개변수 객체 만들기, 객체 통째로 넘기기
데이터 클래스레코드 캡슐화하기, 세터 제거하기, 함수 옮기기, 함수 추출하기, 단계 쪼개기
뒤엉킨 변경단계 쪼개기, 함수 옮기기, 함수 추출하기, 클래스 추출하기
메시지 체인위임 숨기기, 함수 추출하기, 함수 옮기기
반복되는 switch문조건부 로직을 다형성으로 바꾸기
반복문반복문을 파이프라인으로 바꾸기
산탄총 수술함수 옮기기, 필드 옮기기, 여러 함수를 클래스로 묶기, 여러 함수를 변환 함수로 묶기, 단계 쪼개기, 함수 인라인하기, 클래스 인라인하기
상속 포기메서드 내리기, 필드 내리기, 서브 클래스를 위임으로 바꾸기, 슈퍼클래스를 위임으로 바꾸기
서로 다른 인터페이스의 대안 클래스들함수 선언 바꾸기, 함수 옮기기, 슈퍼클래스 추출하기
성의 없는 요소함수 인라인하기, 클래스 인라인하기, 계층 합치기
임시 필드클래스 추출하기, 함수 옮기기, 특이 케이스 추가하기
전역 데이터변수 캡슐화하기
주석함수 추출하기, 함수 선언 바꾸기, Assertion 추가하기
중개자중개자 제거하기, 함수 인라인하기, 서브클래스 위임으로 바꾸기, 슈퍼클래스 위임으로 바꾸기
중복 코드함수 추출하기, 문장 슬라이드하기, 메서드 올리기
추측성 일반화계층 합치기, 함수 인라인하기, 클래스 인라인하기, 함수 선언 바꾸기, 죽은 코드 제거하기
profile
Hello velog!

0개의 댓글