반응형
Use a Data Structure는 긴 매개 변수 목록 문제를 해결하는 방법 중 하나로, 객체 생성에 필요한 매개변수를 하나의 데이터 구조로 묶어서 전달하는 방식입니다.
일반적으로 객체 생성에 필요한 매개변수들은 서로 연관이 있기 때문에 하나의 데이터 구조로 묶을 수 있습니다.
이를 통해 객체 생성에 필요한 매개변수의 개수를 줄일 수 있으며, 객체 생성 코드의 가독성과 유지보수성을 높일 수 있습니다.
다음은 C++ 언어를 사용하여 Use a Data Structure 방식으로 객체를 생성하는 예시입니다.
#include <iostream>
#include <string>
struct ProductConfiguration {
double price;
int quantity;
double tax_rate;
double discount;
};
class Product {
public:
Product(ProductConfiguration config)
: price(config.price), quantity(config.quantity), tax_rate(config.tax_rate), discount(config.discount)
{}
double price;
int quantity;
double tax_rate;
double discount;
};
int main() {
ProductConfiguration config = { 10.0, 5, 0.1, 0.05 };
Product product(config);
std::cout << "Price: " << product.price << std::endl;
std::cout << "Quantity: " << product.quantity << std::endl;
std::cout << "Tax Rate: " << product.tax_rate << std::endl;
std::cout << "Discount: " << product.discount << std::endl;
return 0;
}
위의 예시에서, Product 클래스는 객체 생성 시 많은 매개변수를 받아 초기화하는 생성자를 가지고 있습니다.
이에 대해 Use a Data Structure 방식으로 ProductConfiguration 구조체를 사용하여 객체를 생성하였습니다.
ProductConfiguration 구조체는 객체 생성에 필요한 모든 매개변수를 하나의 구조체로 묶어서 전달합니다.
main() 함수에서는 ProductConfiguration 구조체를 초기화하고, Product 객체를 생성하고, 객체의 속성을 출력합니다.
이렇게 Use a Data Structure 방식으로 객체 생성에 필요한 매개변수를 하나의 데이터 구조로 묶으면, 객체 생성 코드의 가독성과 유지보수성을 높일 수 있습니다.
또한, 데이터 구조를 사용하면, 객체 생성에 필요한 매개변수를 전달하는 방식이 단순해지기 때문에, 실수를 줄일 수 있습니다.
'리팩터링 > 리팩터링 기법' 카테고리의 다른 글
리팩터링. 플래그 인수 제거하기 (Remove Flag Argument) (0) | 2023.03.02 |
---|---|
리팩터링. Use Default Values (1) | 2023.03.01 |
리팩터링. Use a Configuration File (0) | 2023.02.27 |
리팩터링. Use a Builder (0) | 2023.02.26 |
리팩터링 기법. 매개변수를 질의 함수로 바꾸기 (Replace Parameter with Query) (0) | 2023.02.25 |