본문 바로가기
Book/Refactoring 2nd

6~12. 리팩터링

by Soono991 2023. 1. 8.
이 포스팅은 리팩터링 2판으로 학습한 내용을 토대로 정리한 포스팅입니다.

 

6~12장은 1장에서 사용했던 리팩토링 패턴들을 하나씩 별도의 예제와 함께 학습하는 것이기 때문에 예제 코드를 첨부하지는 않고 어떠한 방법들이 있는지에 대해 정리해 보겠습니다.

 

6. 기본적인 리팩터링

리팩터링 이름 반대
함수 추출하기 함수 인라인하기
함수 인라인하기 함수 추출하기
변수 추출하기 변수 인라인하기
함수 선언 바꾸기  
변수 캡슐화하기  
변수 이름 바꾸기  
매개변수 객체 만들기  
여러 함수를 클래스로 묶기  
여러 함수를 변환 함수로 묶기  
단계 쪼개기  

 

7. 캡슐화

리팩터링 이름 반대
레코드 캡슐화하기  
컬렉션 캡슐화하기  
기본형을 객체로 바꾸기  
임시 변수를 질의 함수로 바꾸기  
클래스 추출하기 클래스 인라인하기
클래스 인라인하기 클래스 추출하기
위임 숨기기 중개자 제거하기
중개자 제거하기 위임 숨기기
알고리즘 교체하기  

 

8. 기능 이동

리팩터링 이름 반대
함수 옮기기  
필드 옮기기  
문장을 함수로 옮기기 문장을 호출한 곳으로 옮기기
문장을 호출한 곳으로 옮기기 문장을 함수로 옮기기
인라인 코드를 함수 호출로 바꾸기  
문장 슬라이드하기  
반복문 쪼개기  
반복문을 파이프라인으로 바꾸기  
죽은 코드 제거하기  

 

9. 데이터 조직화

리팩터링 이름 반대
변수 쪼개기  
필드 이름 바꾸기  
파생 변수를 질의 함수로 바꾸기  
참조를 값으로 바꾸기 값을 참조로 바꾸기
값을 참조로 바꾸기 참조를 값으로 바꾸기
매직 리터럴 바꾸기  

 

10. 조건부 로직 간소화

리팩터링 이름 반대
조건문 분해하기  
조건식 통합하기  
중첩 조건문을 보호 구문으로 바꾸기  
조건부 로직을 다형성으로 바꾸기  
특이 케이스 추가하기  
어서션 추가하기  

 

11. API 리팩터링

리팩터링 이름 반대
질의 함수와 변경 함수 분리하기  
함수 매개변수화하기  
플래그 인수 제거하기  
객체 통째로 넘기기  
매개변수를 질의 함수로 바꾸기 질의 함수를 매개변수로 바꾸기
질의 함수를 매개변수로 바꾸기 매개변수를 질의 함수로 바꾸기
세터 제거하기  
생성자를 팩터리 함수로 바꾸기  
함수를 명령으로 바꾸기 명령을 함수로 바꾸기
명령을 함수로 바꾸기 함수를 명령으로 바꾸기
오류 코드를 예외로 바꾸기  
예외를 사전확인으로 바꾸기  

 

12. 상속 다루기

리팩터링 이름 반대
메서드 올리기 메서드 내리기
메서드 내리기 메서드 올리기
필드 올리기 필드 내리기
필드 내리기 필드 올리기
생성자 본문 올리기  
타입 코드를 서브 클래스로 바꾸기 서브 클래스 제거하기
서브 클래스 제거하기 타입 코드를 서브 클래스로 바꾸기
슈퍼 클래스 추출하기  
계층 합치기  
서브 클래스를 위임으로 바꾸기  
슈퍼 클래스를 위임으로 바꾸기  

 

 

6~12장에서 소개한 리팩터링 종류를 한 번 정리해 봤습니다.

각 종류별로 예제를 통해 이 리팩토링은 어떤 식으로 코드를 변경하는구나. 정도를 학습하는 것이기 때문에 따로 코드까지 정리할 필요는 없다고 생각했습니다.

 

책을 안 읽어보신 분들이라면 한 번씩 예제를 직접 타이핑하여 학습해 보시는 것을 추천합니다.

 

 

'Book > Refactoring 2nd' 카테고리의 다른 글

4. 테스트 구축하기  (0) 2023.01.08
3. 코드에서 나는 악취  (0) 2023.01.08
2. 리팩터링 원칙  (0) 2023.01.08
1. 리팩터링: 첫 번째 예시  (0) 2023.01.08

댓글