상세 컨텐츠

본문 제목

6.2. 함수 인라인하기 (inline Function)

🍜개발자라면/책을 읽자✍

by :부셔져버린개발자 2021. 9. 25. 13:44

본문

함수 호출 부분에 해당 함수의 본문 넣기

- 리팩터링 과정에서 잘못 추출된 함수

- 간접 호출을 과하게 쓰는 코드


방법

1. 다형 메서드인지 확인한다. (서브 클래스에서 오버라이드하는 메서드는 인라인하면 안 된다.)

2. 인라인할 함수를 호출하는 곳을 모두 찾는다.

3. 각 호출문을 함수 본문으로 교체한다.

4. 하나씩 교체할 때마다 테스트한다.

5. 함수 정의를 삭제한다.

 

 


  함수 인라인하기  

 

moreThanFiveLateDeliveries 를 인라인 시키고자 한다.
// 변경전
function getRating(driver){
    return moreThanFiveLateDeliveries(driver)?2:1;
}
function moreThanFiveLateDeliveries(driver){
    return driver.numberOfLateDeliveries>5;
}

// 변경후
function getRating(driver){
    return (driver.numberOfLateDeliveries>5)?2:1;
}

 

 


복잡한 예제

// 변경전
function reportLines(aCustomer){
    const lines = [];
    gatherCustomerData(lines, aCustomer);
    return lines;
}
function gatherCustomerData(out, aCustomer){
   out.push(["name", aCustomer.name]);
   out.push(["location", aCustomer.location]);
}

// 한 줄 씩 변경을 한다.
function reportLines(aCustomer){
    const lines = [];
    lines.push(["name", aCustomer.name]);
    lines.push(["location", aCustomer.location]);
    return lines;
}

 

728x90

관련글 더보기