회고모음

클래스 상속을 이용하여 if~else문 리팩토링

악분 2023. 2. 14. 20:00
반응형

개요

쿠버네티스 API를 이용하여 pod를 조회하는 로직이 있는데, 예외 라벨규칙이 계속 추가되면서 if~else가 많아졌습니다. if~else를 어떻게 하면 덜 사용할 수 있을까를 고민하다가 클래스 상속을 사용해보기로 했습니다.

 

개선 방법

pod조회시 사용하는 라벨을 오버라이딩 하는 방법을 선택했습니다. 기본 클래스는 pod조회할 때 사용할 라벨을 함수를 사용하여 생성합니다. 예외 규칙이 필요한 pod는 클래스를 상속하여 라벨생성 함수만 오버라이딩하여 if~else를 제거 했습니다.

class Parent:
  def serach_pods(self):
    labels = self.generate_labels()
    pod 조회(labels)
    
   def generate_labels(self):
     return "a=b"
     
     
 class 예외규칙1(Parent):
   def generate_labels(self):
     return "hello=world"
     

 class 예외규칙2(Parent):
   def generate_labels(self):
     return "this=that"

 

반응형