Use Default Values는 긴 매개 변수 목록 문제를 해결하는 방법 중 하나로, 객체 생성 시 일부 매개변수에 대해 기본값을 지정하는 방식입니다.
객체 생성에 필요한 매개변수 중 일부는 일반적으로 고정값을 가지는 경우가 많습니다.
예를 들어, 생성되는 객체의 색상이나 크기 등은 사용자가 매번 변경하지 않는 경우가 많기 때문입니다.
이 경우, 이러한 매개변수에 대해 미리 기본값을 지정해두고, 객체 생성 시 해당 매개변수의 값을 지정하지 않으면 자동으로 기본값을 사용하도록 합니다.
이렇게 Use Default Values 방식을 사용하면 객체 생성 시 필수적으로 매개변수를 모두 전달할 필요가 없어지기 때문에 코드가 간결해지고 가독성이 높아집니다.
또한, 기본값을 사용하도록 미리 설정해두면, 객체 생성 시 매개변수를 생략하더라도 코드가 잘 동작하도록 보장할 수 있습니다.
다음은C++ 언어를 사용하여 Use Default Values 방식으로 객체를 생성하는 예시 코드입니다.
#include <iostream>
#include <string>
class Product {
public:
Product(std::string name, float price, int quantity = 1, float tax_rate = 0.1, float discount = 0.0)
: name_(name), price_(price), quantity_(quantity), tax_rate_(tax_rate), discount_(discount) {}
float total_price() const {
return (price_ * quantity_) * (1 + tax_rate_) - discount_;
}
private:
std::string name_;
float price_;
int quantity_;
float tax_rate_;
float discount_;
};
int main() {
Product product1("T-shirt", 10000);
Product product2("Shoes", 50000, 2);
Product product3("Pants", 30000, 1, 0.05, 5000);
std::cout << product1.total_price() << std::endl;
std::cout << product2.total_price() << std::endl;
std::cout << product3.total_price() << std::endl;
return 0;
}
위의 예시에서, Product 클래스는 객체 생성 시 많은 매개변수를 받아 초기화하는 생성자를 가지고 있습니다.
이에 대해 Use Default Values 방식으로 quantity, tax_rate, discount 매개변수에 대해 기본값을 지정해두었습니다.
total_price() 메소드는 제품 가격, 수량, 세금, 할인 등을 이용하여 총 가격을 계산합니다.
main() 함수에서는 Product 객체를 생성하고, 총 가격을 출력합니다.
이렇게 Use Default Values 방식으로 객체 생성에 필요한 매개변수에 대해 기본값을 설정하면, 코드가 간결하고 가독성이 높아집니다.
또한, 기본값을 사용하도록 미리 설정해두면, 객체 생성 시 매개변수를 생략하더라도 코드가 잘 동작하도록 보장할 수 있습니다.
'리팩터링 > 리팩터링 기법' 카테고리의 다른 글
리팩터링 기법. 여러 함수를 클래스로 묶기 (Combine Functions into Class) (0) | 2023.03.03 |
---|---|
리팩터링. 플래그 인수 제거하기 (Remove Flag Argument) (0) | 2023.03.02 |
리팩터링. Use a Data Structure (0) | 2023.02.28 |
리팩터링. Use a Configuration File (0) | 2023.02.27 |
리팩터링. Use a Builder (0) | 2023.02.26 |