[파이썬] 조건문과 모듈의 강결합 제거

조건문과 모듈 간의 강결합은 프로그램의 유연성과 확장성을 제한하는 요소입니다. 강결합은 코드를 복잡하게 만들고, 유지보수를 어렵게 할 수 있습니다. 따라서 이러한 강결합을 제거하고 유연하고 확장 가능한 코드를 작성하는 것은 중요합니다.

파이썬에서는 다양한 방법으로 조건문과 모듈 간의 강결합을 제거할 수 있습니다. 아래 예제 코드를 통해 강결합 제거 방법을 살펴보겠습니다.

# 모듈 간의 강결합
class PaymentModule:
    def process_payment(self, amount):
        if amount <= 100:
            # 신용 카드로 결제
            self.process_credit_card(amount)
        else:
            # 페이팔로 결제
            self.process_paypal(amount)
    
    def process_credit_card(self, amount):
        # 신용 카드 결제 처리 로직
        print("신용 카드로 결제: ", amount)
    
    def process_paypal(self, amount):
        # 페이팔 결제 처리 로직
        print("페이팔로 결제: ", amount)

위 예제 코드에서 PaymentModule은 결제 처리를 위한 모듈입니다. process_payment 메서드는 결제 금액에 따라 신용 카드 또는 페이팔로 결제를 처리합니다. 하지만 이렇게 구현된 코드는 결제 방법이 추가되거나 변경될 때마다 수정해야 하는 강결합을 가지고 있습니다.

강결합을 제거하기 위해 파이썬의 다형성을 활용할 수 있습니다. 다형성은 동일한 인터페이스를 가진 여러 객체를 사용할 수 있게 해주는 개념입니다. 아래 예제 코드를 통해 다형성을 활용한 강결합 제거 방법을 살펴보겠습니다.

# 조건문을 이용한 강결합
class PaymentModule:
    def process_payment(self, payment_method, amount):
        payment_method.process_payment(amount)
    
class CreditCardPayment:
    def process_payment(self, amount):
        # 신용 카드 결제 처리 로직
        print("신용 카드로 결제: ", amount)
    
class PaypalPayment:
    def process_payment(self, amount):
        # 페이팔 결제 처리 로직
        print("페이팔로 결제: ", amount)

위 예제 코드에서 PaymentModule은 결제 처리 모듈입니다. process_payment 메서드는 결제 방법(CreditCardPayment 또는 PaypalPayment)과 결제 금액을 파라미터로 받아 해당 결제 방법의 process_payment 메서드를 호출합니다. 이러한 방법을 통해 결제 방법이 추가되어도 PaymentModule의 코드를 수정할 필요가 없습니다.

조건문 대신 다형성을 사용하여 모듈 간의 강결합을 제거하면 결합도를 낮출 수 있으며, 코드의 유연성과 확장성을 높일 수 있습니다. 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.