리팩터링/리팩터링 기법

리팩터링 기법. 임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query)

developer-tj 2023. 2. 17. 12:00
반응형

"임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query)"는 메서드 내부에서 임시 변수를 사용하는 대신 해당 계산을 반환하는 메서드를 만드는 리팩터링 기법입니다.

 

임시 변수를 만든다는 거 자체가 리팩터링이라고 할 수 있습니다.

해당 임수 변수를 통해서 어떤 의도를 가진 로직인지 알 수 있기 때문입니다.

이러한 임시 변수를 만드는 로직 자체를 함수로 만들 수 있습니다.

임시 변수를 만드는 함수는 해당 임시 변수를 사용하는 곳에서 사용하며, 해당 임시 변수를 사용하는 코드 로직을 함수로 추출할 때, 매개 변수 넘겨주는 대신 임시 변수 생성 함수를 호출하는 할 수 있습니다.

 

 

예를 들어, 다음과 같은 코드가 있다고 가정해 봅시다.

double calculateTotalPrice(int quantity, double price) {
    double basePrice = quantity * price;
    if (basePrice > 1000) {
        return basePrice * 0.95;
    }
    else {
        return basePrice * 0.98;
    }
}

이 코드에서 basePrice는 임시 변수로 사용됩니다. 

이 변수는 단순히 quantity * price를 저장하고 있습니다. 

 

이를 "임시 변수를 질의 함수로 바꾸기"를 이용하여 다음과 같이 개선할 수 있습니다.

double calculateTotalPrice(int quantity, double price) {
    if (basePrice(quantity, price) > 1000) {
        return basePrice(quantity, price) * 0.95;
    }
    else {
        return basePrice(quantity, price) * 0.98;
    }
}

double basePrice(int quantity, double price) {
    return quantity * price;
}

basePrice 함수는 quantity와 price를 인자로 받아서 quantity * price를 반환합니다. 

이 함수를 사용하여 calculateTotalPrice 함수를 개선하면 임시 변수를 사용하지 않아도 됩니다. 

또한 basePrice 함수를 다른 함수에서도 사용할 수 있어 코드 중복을 줄일 수 있습니다.