리팩터링 | 마틴 파울러 | 한빛미디어- 교보ebook

코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기, 20여 년 만에 다시 돌아온 마틴 파울러의 리팩터링 2판 리팩터링 1판은 1999년 출간되었으며, 한국어판은 2002년 한국에 소개되었다

ebook-product.kyobobook.co.kr

개요

리팩터링에서 기조는 짧막한 함수를 명료한 이름을 붙여 사용하는 것이다. 때로는 그보다 함수 본문이 이름만큼 명확한 경우도 있다. 이런 경우 간접 호출은 거슬리므로 제거한다.

 

이유로 함수 추출하기로 추출한 경우도 (잘못 추출한 것이므로) 다시 함수 인라인하기로 합칠 수도 있다.

 

간접 호출을 너무 과하게 쓰는 코드도 인라인 대상이다.

 

인라인하기 너무 복잡한 함수는 인라인하기 적용 대상이 아니다.

예시

가장 간단한 예시

function rating(aDriver){
    return moreThanFiveLateDeliveries(aDriver) ? 2 : 1;
}
function moreThanFiveLateDeliveries(aDriver){
    return aDriver.numberOfLateDeliveres > 5;
}
function rating(aDriver){
    return (aDriver.numberOfLateDeliveres > 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 = [];
    out.push(["name",aCustomer.name]);
    out.push(["location",aCustomer.location]);
    return lines;
}

 

함수 인라인하기가 너무 복잡하다면 반드시 단계를 나누어 처리하자. 그래야 과정 중간에 테스트 실패 지점에서 버그 구간을 좁게 특정할 있다.

 

+ Recent posts