[리팩터링 카탈로그] 1-5. 함수 선언 바꾸기

간단한 절차

  1. 매개 변수를 제거하려거든 먼저 함수 본문에서 제고 대상 매개변수를 참조하는 곳은 없는지 확인한다.
  2. 메서드 선언을 원하는 형태로 바꾼다.
  3. 기존 메서드 선언을 참조하는 부분을 모두 찾아서 바뀐 형태로 수정한다.
  4. 테스트 한다.

예시

Before:

function circum(radius) {
    return 2 * Math.PI * radius;
}

After:

function circumference(radius) {
    return 2 * Math.PI * radius;
}

마이그레이션 절차

  1. 이어지는 추출 단계를 수원하게 만들어야 한다면 함수의 본문을 적절히 리팩터링한다.
  2. 함수 본문을 새로운 함수로 추출한다.
  3. 추출한 함수에 매개변수를 추가해야 한다면 ‘간단한 절차를’따라 추가한다.
  4. 테스트한다.
  5. 기존 함수를 인라인한다.
  6. 이름을 임시로 붙여뒀다면 함수 선언 바꾸기를 한 번 더 적용해서 원래 이름으로 되돌린다.
  7. 테스트한다.

예시

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

댓글 남기기