반응형
"Combine Functions into Class" 리팩터링 기법은 "긴 매개 변수 목록" 문제를 해결하는 데 도움이 되는 기법 중 하나입니다.
이 기법은 여러 개의 함수를 하나의 클래스로 묶는 것입니다.
이를 통해 관련된 기능을 하나의 단위로 묶어서 더 간결하고 유지보수가 용이한 코드를 작성할 수 있습니다.
예를 들어, 다음과 같은 두 개의 함수가 있다고 가정해 봅시다.
void process_order(std::string customer_name, std::string product_name, int quantity, double price);
void cancel_order(std::string customer_name, std::string product_name);
위 함수들은 주문을 처리하고 취소하는 데 필요한 기능을 수행합니다.
그러나 매개변수가 길고 복잡하며, 유사한 유형의 기능을 처리하는 다른 함수들과 함께 존재한다면 코드의 복잡도가 증가할 수 있습니다.
이 때, Order 클래스를 만들어 위 함수들을 하나의 클래스로 묶을 수 있습니다.
class Order {
public:
void process(std::string customer_name, std::string product_name, int quantity, double price);
void cancel(std::string customer_name, std::string product_name);
private:
// 멤버 변수 등
};
위 코드에서 Order 클래스는 process()와 cancel() 함수를 제공합니다.
이제 주문 처리 및 취소와 관련된 모든 기능을 하나의 클래스에 묶어서 사용할 수 있습니다.
// Order 객체 생성
Order order;
// 주문 처리
order.process("홍길동", "MacBook Pro", 2, 3000000.0);
// 주문 취소
order.cancel("홍길동", "MacBook Pro");
위와 같이 Order 클래스를 사용하면, 관련된 기능을 하나의 단위로 묶어서 코드를 간결하게 유지할 수 있습니다.
또한, Order 클래스의 멤버 변수를 사용하여 상태 정보를 저장하고 필요한 경우 다른 함수에서도 사용할 수 있습니다.
이렇게 함으로써 코드의 유지보수성이 향상될 수 있습니다.
'리팩터링 > 리팩터링 기법' 카테고리의 다른 글
리팩터링 기법. 변수 쪼개기 (Split Variable) (0) | 2023.03.07 |
---|---|
리팩터링 기법. 변수 캡슐화하기 (Encapsulate Variable) (0) | 2023.03.05 |
리팩터링. 플래그 인수 제거하기 (Remove Flag Argument) (0) | 2023.03.02 |
리팩터링. Use Default Values (1) | 2023.03.01 |
리팩터링. Use a Data Structure (0) | 2023.02.28 |