임시변수를 메서드 호출로 전환 (Replace Temp with Query)

임시변수를 메서드 호출로 전환 (Replace Temp with Query)은 임시변수를 메서드 호출로 대체하여 코드 중복과 가독성 문제를 해결하는 리팩토링 기법입니다. 이 기법을 적용하면 임시변수를 사용하지 않으므로 코드 중복과 가독성 문제를 해결할 수 있습니다.

예를 들어, 다음과 같은 코드가 있다고 가정해보겠습니다.

func calculateTotalPrice(price: Double, count: Int) -> Double {
    let totalPrice = price * Double(count)
    let isDiscountable = count > 10
    var finalPrice = totalPrice
    if isDiscountable {
        finalPrice *= 0.9
    }
    return finalPrice
}

위 코드에서는 totalPrice와 isDiscountable이라는 두 개의 임시변수를 사용하여 finalPrice를 계산합니다. 

이를 임시변수를 사용하지 않도록 메서드 호출로 대체할 수 있습니다.

func calculateTotalPrice(price: Double, count: Int) -> Double {
    var finalPrice = price * Double(count)
    if count > 10 {
        finalPrice *= 0.9
    }
    return finalPrice
}

func isDiscountable(count: Int) -> Bool {
    return count > 10
}

위 예시에서는 isDiscountable 메서드를 추가하여 count > 10을 검사하는 코드를 재사용하도록 만들었습니다. 이를 통해 isDiscountable 메서드를 호출하여 중복 코드를 제거하고 가독성을 높일 수 있습니다.

단, 이 기법을 적용할 때는 메서드 호출로 대체할 임시변수의 계산식이 비용이 큰 경우 성능에 영향을 미칠 수 있으므로, 

이를 고려하여 적용해야 합니다. 

또한, 메서드 호출이 여러 번 발생할 경우 임시변수를 사용하는 것이 성능에 더 유리할 수 있으므로 이를 고려하여 적용해야 합니다.

 

감사합니다.