我有一个类Path
,在专用模块中定义了大约 10 个方法Path.py
。最近我需要再为Path
.
哪里是放置它们的好地方,这样它们的上下文就很清楚了?当然,我可以将它们与类定义放在一起,但我不喜欢这样,因为我喜欢将重要的事情与晦涩的事情分开。
目前我将这些方法作为函数定义在一个单独的模块中,只是为了保持独立,但最好将它们作为绑定方法。(目前他们将Path
实例作为显式参数。)
有人有建议吗?
我有一个类Path
,在专用模块中定义了大约 10 个方法Path.py
。最近我需要再为Path
.
哪里是放置它们的好地方,这样它们的上下文就很清楚了?当然,我可以将它们与类定义放在一起,但我不喜欢这样,因为我喜欢将重要的事情与晦涩的事情分开。
目前我将这些方法作为函数定义在一个单独的模块中,只是为了保持独立,但最好将它们作为绑定方法。(目前他们将Path
实例作为显式参数。)
有人有建议吗?
如果该方法与路径相关 - 无论多么晦涩 - 我认为它应该驻留在类本身中。
如果您有多个具有路径相关功能的地方,则会导致问题。例如,如果您想检查某些功能是否已经存在,新程序员如何知道检查其他不太明显的地方?
我认为一个好的做法可能是按重要性对函数进行排序。正如您可能听说过的那样,有些人建议首先放置类的公共成员,然后再放置私有/受保护的成员。您可以考虑将类中的常用方法放在比晦涩难懂的方法更高的位置。
如果您热衷于不惜一切代价将这些方法放在不同的源文件中,并且热衷于不惜一切代价将它们放在方法中,您可以通过使用不同的源文件来定义一个 mixin 类并拥有您的 Path 类来实现这两个目标导入该方法并从该 mixin 中乘法继承。所以,从技术上讲,这是完全可行的。
但是,我不推荐这种做法:值得使用“大炮”(例如多重继承)仅服务于重要目标(例如重用和删除重复),并且以这种方式分离方法并不是真正的特别关键的目标。
如果那些“晦涩难懂的方法”没有发挥作用,那么您就不会实施它们,因此它们一定具有一定的重要性,毕竟;所以我只是在文档字符串和注释中澄清它们的用途,也许明确提到它们很少需要,然后就这样吧。
我只会在名称前加上下划线_
,以表明读者不应该为它们烦恼。它通常与其他语言中的私人成员相同。
将它们放在 Path 类中,并用注释或文档字符串记录它们是“晦涩的”。如果你愿意,可以在最后分开它们。
哦,等等,我想到了一些东西——我可以在Path.py
模块中定义它们,其中每个晦涩的方法都将是一个单一的方法,它将从当前存在的单独模块中调用函数。通过这种折衷,晦涩的方法将在文件末尾包含大约 10 行,而不是其体积的 50%。
我建议让它们可以从名为“Utilties”之类的 Path 类的属性中访问。例如:Path.Utilities.RazzleDazzle
。这将有助于自动完成工具和一般维护。