이 포스팅은 리팩터링 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 |
댓글