반응형
"매개변수 객체 만들기"는 여러 개의 매개변수를 묶어서 하나의 객체로 만들고, 이를 매개변수로 전달하는 방식으로 긴 매개 변수 목록 문제를 해결하는 기법입니다.
예를 들어, 다음과 같은 함수가 있다고 가정해봅시다.
double calculate_total_price(double price, int quantity, double tax_rate, double discount) {
// 계산 로직
}
이 함수는 네 개의 매개변수를 가지고 있습니다. 이를 "매개변수 객체 만들기" 리팩토링 기법을 사용하여 개선하면 다음과 같이 바꿀 수 있습니다.
class Product {
public:
double price;
int quantity;
double tax_rate;
double discount;
Product(double price, int quantity, double tax_rate, double discount)
: price(price), quantity(quantity), tax_rate(tax_rate), discount(discount)
{}
};
double calculate_total_price(Product product) {
// 계산 로직
}
위의 예시에서, 네 개의 매개변수를 가진 함수를 하나의 객체로 묶어서 함수의 매개변수로 전달했습니다.
이를 통해 함수의 매개변수 개수를 줄이고, 객체의 속성을 직접 참조하여 필요한 값에만 접근할 수 있기 때문에 코드의 가독성과 유지보수성을 높일 수 있습니다.
이러한 식으로 함수에 인자값으로 넘어가는 매개변수들이 여러 함수에 걸처 같이 넘어간다면
해당 매개변수들을 묶은 자료구조(struct, class)로 만들수 있습니다.
- 해당 매개변수의 관계가 명시적으로 나타낸다
- 매소드에 인자값의 개수를 줄 일 수 있다.
- 해당 자료구조를 클래스로 만들어 관리할 수 있다.
'리팩터링 > 리팩터링 기법' 카테고리의 다른 글
리팩터링. 반복문 쪼개기 (Split Loop) (0) | 2023.02.22 |
---|---|
리팩터링. 조건문 분해하기 (Decompose Conditional) (0) | 2023.02.21 |
리팩터링. 함수를 명령으로 바꾸기 (Replace Function with Command) (0) | 2023.02.20 |
리팩터링. 객체 통째로 넘기기 (Preserve Whole Object) (0) | 2023.02.19 |
리팩터링 기법. 임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query) (0) | 2023.02.17 |