개요
리팩터링에서 기조는 짧막한 함수를 명료한 이름을 붙여 사용하는 것이다. 때로는 그보다 함수 본문이 이름만큼 명확한 경우도 있다. 이런 경우 간접 호출은 거슬리므로 제거한다.
위 이유로 함수 추출하기로 추출한 경우도 (잘못 추출한 것이므로) 다시 함수 인라인하기로 합칠 수도 있다.
간접 호출을 너무 과하게 쓰는 코드도 인라인 대상이다.
인라인하기 너무 복잡한 함수는 인라인하기 적용 대상이 아니다.
예시
가장 간단한 예시
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; } |
함수 인라인하기가 너무 복잡하다면 반드시 단계를 나누어 처리하자. 그래야 과정 중간에 테스트 실패 지점에서 버그 구간을 너 좁게 특정할 수 있다.
'IT책, 강의 > 리팩터링' 카테고리의 다른 글
06 - 기본적인 리펙터링 - 변수 인라인하기 (0) | 2023.07.17 |
---|---|
06 - 기본적인 리펙터링 - 변수 추출하기 (0) | 2023.07.16 |
06 - 기본적인 리팩터링 - 함수 추출하기 (0) | 2023.07.14 |
04 - 테스트 구축하기 (1) | 2023.07.12 |
03 - 코드에서 나는 악취 (0) | 2023.07.10 |