2

我有一个类Path,在专用模块中定义了大约 10 个方法Path.py。最近我需要再为Path.

哪里是放置它们的好地方,这样它们的上下文就很清楚了?当然,我可以将它们与类定义放在一起,但我不喜欢这样,因为我喜欢将重要的事情与晦涩的事情分开。

目前我将这些方法作为函数定义在一个单独的模块中,只是为了保持独立,但最好将它们作为绑定方法。(目前他们将Path实例作为显式参数。)

有人有建议吗?

4

6 回答 6

4

如果该方法与路径相关 - 无论多么晦涩 - 我认为它应该驻留在类本身中。

如果您有多个具有路径相关功能的地方,则会导致问题。例如,如果您想检查某些功能是否已经存在,新程序员如何知道检查其他不太明显的地方?

我认为一个好的做法可能是按重要性对函数进行排序。正如您可能听说过的那样,有些人建议首先放置类的公共成员,然后再放置私有/受保护的成员。您可以考虑将类中的常用方法放在比晦涩难懂的方法更高的位置。

于 2009-09-05T15:33:41.477 回答
2

如果您热衷于不惜一切代价将这些方法放在不同的源文件中,并且热衷于不惜一切代价将它们放在方法中,您可以通过使用不同的源文件来定义一个 mixin 类并拥有您的 Path 类来实现这两个目标导入该方法并从该 mixin 中乘法继承。所以,从技术上讲,这是完全可行的。

但是,我不推荐这种做法:值得使用“大炮”(例如多重继承)仅服务于重要目标(例如重用和删除重复),并且以这种方式分离方法并不是真正的特别关键的目标。

如果那些“晦涩难懂的方法”没有发挥作用,那么您就不会实施它们,因此它们一定具有一定的重要性,毕竟;所以我只是在文档字符串和注释中澄清它们的用途,也许明确提到它们很少需要,然后就这样吧。

于 2009-09-05T15:39:15.860 回答
0

我只会在名称前加上下划线_,以表明读者不应该为它们烦恼。它通常与其他语言中的私人成员相同。

于 2009-09-05T15:31:54.563 回答
0

将它们放在 Path 类中,并用注释或文档字符串记录它们是“晦涩的”。如果你愿意,可以在最后分开它们。

于 2009-09-05T15:36:20.863 回答
0

哦,等等,我想到了一些东西——我可以在Path.py模块中定义它们,其中每个晦涩的方法都将是一个单一的方法,它将从当前存在的单独模块中调用函数。通过这种折衷,晦涩的方法将在文件末尾包含大约 10 行,而不是其体积的 50%。

于 2009-09-05T15:45:08.110 回答
0

我建议让它们可以从名为“Utilties”之类的 Path 类的属性中访问。例如:Path.Utilities.RazzleDazzle。这将有助于自动完成工具和一般维护。

于 2011-11-06T17:09:05.930 回答