이 질문은 언어에 구애받지 않지만 완전히 다릅니다. 예를 들어, 객체 지향 프로그래밍 (OOP)은 파이썬 과는 달리 일류 함수가없는 Java 와 다릅니다 .
다시 말해서, Java와 같은 언어로 불필요한 클래스를 작성하는 데는 죄책감이 적지 만 Python과 같이 덜 언어적인 언어에는 더 나은 방법이 있다고 생각합니다.
내 프로그램은 여러 번 비교적 복잡한 작업을 수행해야합니다. 이 작업에는 많은 "부기"가 필요하며 일부 임시 파일 등을 작성하고 삭제해야합니다.
그렇기 때문에 많은 다른 "하위 작업"을 호출해야하는 이유도 있습니다. 하나의 거대한 방법으로 모든 것을 넣는 것은 그리 훌륭하지 않고 모듈 식이며 읽기 가능하지 않습니다.
이제 이것은 내 마음에 오는 접근법입니다.
1. 하나의 공용 메소드 만있는 클래스를 작성하고 서브 변수에 필요한 내부 상태를 인스턴스 변수로 유지하십시오.
다음과 같이 보일 것입니다.
class Thing:
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
self.var3 = []
def the_public_method(self, param1, param2):
self.var4 = param1
self.var5 = param2
self.var6 = param1 + param2 * self.var1
self.__suboperation1()
self.__suboperation2()
self.__suboperation3()
def __suboperation1(self):
# Do something with self.var1, self.var2, self.var6
# Do something with the result and self.var3
# self.var7 = something
# ...
self.__suboperation4()
self.__suboperation5()
# ...
def suboperation2(self):
# Uses self.var1 and self.var3
# ...
# etc.
이 접근 방식에서 볼 수있는 문제는이 클래스의 상태가 내부적으로 만 의미가 있으며 유일한 공용 메소드 호출을 제외하고 인스턴스에서 아무것도 수행 할 수 없다는 것입니다.
# Make a thing object
thing = Thing(1,2)
# Call the only method you can call
thing.the_public_method(3,4)
# You don't need thing anymore
2. 클래스없이 여러 함수를 만들고 내부적으로 필요한 다양한 변수를 인수로 전달합니다.
내가 볼 수있는 문제는 함수간에 많은 변수를 전달해야한다는 것입니다. 또한 기능은 서로 밀접하게 관련되어 있지만 그룹화되지는 않습니다.
3. 2.처럼 상태 변수를 전달하는 대신 전역 변수로 만듭니다.
다른 입력으로 작업을 두 번 이상 수행해야하기 때문에 이것은 전혀 좋지 않습니다.
네 번째, 더 나은 접근법이 있습니까? 그렇지 않다면,이 방법들 중 어느 것이 더 좋을까요? 그 이유는 무엇입니까? 내가 놓친 것이 있습니까?