我正在考虑实现helpers函数的三种方法,即只能通过类中的特定方法调用的函数。选项包括:
以下是显示三个选项的最小代码:
class test(object):
def mytest1(self, n):
return outloop(n)
def mytest2(self, n):
return self.inloop(n)
def inloop(self, n):
if n < 0:
return 0
return self.inloop(n - 1) + 1
def mytest3(self, n):
def innerloop(n):
if n < 0:
return 0
return innerloop(n - 1) + 1
return innerloop(n)
def outloop(n):
if n < 0:
return 0
return outloop(n - 1) + 1
我测试了表演,三者似乎大致相同。我的问题:在三种选择之间进行选择时,您能否分享一些我应该注意的注意事项?
我希望获得有关您何时应该使用每种内容的架构洞察力和指导。
答案 0 :(得分:1)
从面向对象的设计角度来看,调用者结合方法调用以实现其结果而不是被调用类本身更好。这为调用者的代码创造了更大的灵活性,这在需求不断变化的世界中通常是一件好事。
就所述类中定义的辅助函数而言,问题是所调用方法的功能内在或必不可少的辅助函数。换句话说,将功能分开并创建两个有用的功能是否有意义,或者你真的只有一个有用的功能。
在将辅助函数定义为外部函数方面,相关函数应该放在一个类中,以便于代码维护。请记住,任何课程都应遵循Single Responsibility Principle并且只有一个理由可以改变。
答案 1 :(得分:0)
如果你只是在课堂外使用普通函数,那么测试会更容易。