간단한 절차
- 매개 변수를 제거하려거든 먼저 함수 본문에서 제고 대상 매개변수를 참조하는 곳은 없는지 확인한다.
- 메서드 선언을 원하는 형태로 바꾼다.
- 기존 메서드 선언을 참조하는 부분을 모두 찾아서 바뀐 형태로 수정한다.
- 테스트 한다.
예시
Before:
function circum(radius) {
return 2 * Math.PI * radius;
}
After:
function circumference(radius) {
return 2 * Math.PI * radius;
}
마이그레이션 절차
- 이어지는 추출 단계를 수원하게 만들어야 한다면 함수의 본문을 적절히 리팩터링한다.
- 함수 본문을 새로운 함수로 추출한다.
- 추출한 함수에 매개변수를 추가해야 한다면 ‘간단한 절차를’따라 추가한다.
- 테스트한다.
- 기존 함수를 인라인한다.
- 이름을 임시로 붙여뒀다면 함수 선언 바꾸기를 한 번 더 적용해서 원래 이름으로 되돌린다.
- 테스트한다.
예시
Before:
function circum(radius) {
return 2 * Math.PI * radius;
}
After:
// Step 1: 본문 전체를 새로운 함수로 추출한다.
function circum(radius) {
return 2 * Math.PI * radius;
}
function circumference(radius) {
return 2 * Math.PI * radius;
}
// Step 2: 수정한 코드를 테스트 한 뒤 예전 함수를 인라인한다.
function circum(radius) {
return circumference(radius);
}
function circumference(radius) {
return 2 * Math.PI * radius;
}
// Step 3: 예전 함수를 호출하는 부분을 새함수로 호출하도록 하나씩 변경하면서 테스트 한다. 모두 바꿧다면 기존 함수를 삭제한다
let result = circum(radius);
let result = circumference(radius);
출처 : 리팩터링 2판 – Chapter6