使方法模块化或依赖/链接有意义吗?

我正在学习Python和一般编程真的,我很好奇,从一个更哲学的角度东西。具体来说,我想知道在一个类中的单个方法是完全模块化的还是相互依赖的。使方法模块化或依赖/链接有意义吗?

例如,在我当前的用例中,我以相关的方式使用我的类中的所有方法,即将来自一个方法的输出或返回值用作下一个方法中的参数。尽管在这种情况下,在下一个方法中直接调用该方法的值肯定会更容易,但我仍然使用泛型参数并以模块化方式对其进行编码,然后在运行该脚本时,我列出了一个较长的依赖关系链为了调用它。我会举一个例子,因为我不确定我说的是否合理,但我想让你们的人对此有所意见。谢谢!!

的类中的方法2

模块化例如:

def get_token(self, values, url): 

self.values = values

self.url = url

tls_version = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)

data = urllib.parse.urlencode(self.values).encode("utf-8")

req = urllib.request.Request(self.url, data)

res = urllib.request.urlopen(req, context=tls_version).read()

response_js = json.loads(res)

return response_js

def parse(self, json_block):

self.json_block = json_block

token = self.json_block['access_token']

inst_url = self.json_block['instance_url']

return token, inst_url

当我打电话这一点,则是一个长长的名单(即):

self.parse(get_token(values, url)) ... and this goes on as there are several other methods 

当涉及到依赖的例子......它本质上看起来很相似,但不是允许指定参数,而是使用从函数中的get_token()检索的数据。这将允许更短的方法,也更容易打电话,但我担心这是错误的方式去做,因为它不允许多功能性。

对此事的任何意见,非常感谢!

回答:

我个人认为(因为这是这是什么),最有用的方式做到这一点是让他们都相互分开,但有它计算它们放在一起的功能。

看到代码:

class Foo: 

def method1(self, var1, var2):

# do things

return var3, var4

def method2(self, var1, var2):

# do things

return var3

def method3(self, var1):

# do things

return var3, var4, var5

def method4(self, var1, var2, var3):

# do things

return var3

def calculate_meaning_of_life(self, var1, var2):

inter_var1, inter_var2 = method1(var1, var2)

inter_var3 = method2(inter_var1, inter_var2)

inter_var4, inter_var5, inter_var6 = method3(inter_var3)

answer = method4(inter_var4, inter_var5, inter_var6)

return answer # happens to always output 42

在这里,你可以调用Foo.method3用你喜欢的任何参数,并把它的成绩直线距离,而无需经过其他功能或任何痛苦的那样。此外,您还可以快速调用Foo.calculate_meaning_of_life FUNC计算它们放在一起(注:无法在同一行,因为这将是非常不可读),以任何你想要的变量,它所有繁重的你。

特别是从调试的角度来看,你要能够分别叫所有的人,并分析它们返回什么,因为,在最后,如果他们只能一起跑,为什么不只是有一个功能?

另外,如果您曾经为其他人安装软件包,他们会找到原因,只为他们的特定项目使用Foo.method2,所以您应该尽可能使所有已编写的代码都易于访问。

希望这会有所帮助!

回答:

我看到它的方式是可读性,因为utimately你(和最有可能其他人也)都将有权审查你的代码。你需要一个在这方面适合你的方法。

这是我的方法:

保持每个方法从别人不同。如果你正在考虑使用helper方法,那么把它们保存在它们所使用的方法中是一个好主意,或者(如果在同一个操作中有很多用法)只是将它们分组在他们自己的类中。

class MyClass: 

def distinct_method(self):

def distinct_helper():

# helper

return ", right?"

# do some distinct stuff

return other_distinct_method() + distinct_helper()

def other_distinct_method(self.):

# do some other distinct stuff

return "it should be distinct"

if __name__ == "__main__":

print MyClass().distinct_method()

一个好的经验法则是不会让一个辅助方法类的一部分,除非它是由一个以上的其他实例方法使用如:中

class MyClass2: 

def helper(self):

return "help!"

def method1(self):

return "I use " + self.helper()

def method2(self):

return "I also use " + self.helper()

代替

class MyClass1: 

def helper(self):

return "help!"

def method1(self):

return "I use " + self.helper()

def method2(self):

return "I don't use helper!"

以上是 使方法模块化或依赖/链接有意义吗? 的全部内容, 来源链接: utcz.com/qa/258922.html

回到顶部