【问题标题】:Helper function inside class - pros and cons for various approaches类内的辅助函数 - 各种方法的优缺点
【发布时间】:2017-10-13 16:17:13
【问题描述】:

我正在考虑三种实现辅助函数的方法,即仅由类中的特定方法调用的函数。选项有:

  1. 定义外部函数
  2. 定义类的函数
  3. 在调用函数中定义一个函数

这是显示三个选项的最小代码:

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

我测试了性能,所有三个似乎都大致相同。我的问题:您能否分享一些我在选择三个选项时应该注意的注意事项?

我会很高兴获得关于您认为何时应该使用每个架构的洞察力和指导。

【问题讨论】:

    标签: python class architecture


    【解决方案1】:

    从面向对象设计的角度来看,调用者结合方法调用来实现其结果比被调用的类本身更好。这为调用者的代码创造了更大的灵活性,这在需求不断变化的世界中通常是一件好事。

    也就是说,就类中定义的辅助函数而言,问题是辅助函数对于所调用的方法的功能而言是内在的还是必不可少的。换句话说,将功能拆分并创建两个有用的功能是否有意义,或者您真的只有一个有用的功能。

    在将辅助函数定义为外部函数方面,相关函数应该放在一个类中,以使代码维护更容易。请记住,任何课程都应该遵循Single Responsibility Principle 并且只有一个理由进行更改。

    【讨论】:

      【解决方案2】:

      如果只在类外使用普通函数,测试会更容易。

      【讨论】:

        猜你喜欢
        • 2010-10-29
        • 2012-02-22
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多