Inline Function

최완식·2023년 7월 24일
0

Refactoring

목록 보기
12/15
post-thumbnail

Inline Function, 함수 인라인하기를 알아보자.

요약

코드

function getRating(driver) {
  return moreThanFiveLateDeliveries(driver) ? 2 : 1;
}

function moreThanFiveLateDeliveries(driver) {
  return driver.numberOfLateDeliveries > 5;
}
function getRating(driver) {
  return driver.numberOfLateDeliveries > 5 ? 2 : 1;
}

배경

  • 간접 호출은 유용할 수도 있지만 쓸데 없는 간접 호출은 거슬릴 뿐이다.
  • 이렇게 간접 호출을 제거하고 함수를 간략하게 만드는 것을 함수 인라인하기 라고 말한다.

절차

  1. 다형 메서드인지 확인한다.
    • 메서드가 서브클래스에서 오버라이드 되는지 확인한다.
    • 오버라이드 되지 않는다면 진행한다.
  2. 인라인할 함수를 호출하는 곳을 모두 찾는다.
  3. 각 호출문을 함수 본문으로 교체한다.
  4. 하나씩 교체할 때마다 테스트한다.
    • 이렇게 하면 시간 날 때마다 필요한 부분만 바꿀 수 있다.
  5. 함수 정의(원래 함수)를 삭제한다.

따라하기

function rating(aDriver) {
    return moreThanFiveLateDeliveries(aDriver) ? 2 : 1;
}

function moreThanFiveLateDeliveries(aDriver) {
    return aDriver.numberOfLateDeliveries > 5;
}
  • moreTanFiveLateDeliveries를 사용하는 쪽을 함수 본문으로 바꾼다.
function rating(aDriver) {
    return aDriver.numberOfLateDeliveries > 5 ? 2 : 1;
}

Reference

profile
Goal, Plan, Execute.

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기