【发布时间】:2009-02-09 12:19:02
【问题描述】:
早上好,
我目前正在编写一个 python 库。目前,模块和类以无组织的方式部署,没有合理的设计。随着我接近更正式的版本,我想重新组织类和模块,以便它们具有更好的整体设计。我画了一个导入依赖关系图,我打算按层级聚合类。另外,我正在考虑对类进行一些修改,以减少这些依赖关系。
对于一个潜在复杂且正在开发中的 Python 库进行良好的整体设计,您的策略是什么?你有什么有趣的建议吗?
谢谢
更新:
我确实在寻找经验法则。例如,假设发生这种情况(init.py 为清楚起见已删除)
foo/bar/a.py
foo/bar/b.py
foo/hello/c.py
foo/hello/d.py
现在,如果你碰巧有 d.py 导入 bar.b 和 a.py 导入 hello.c,我会认为这是一个糟糕的设置。另一种情况是
foo/bar/a.py
foo/bar/baz/b.py
foo/bar/baz/c.py
假设 a.py 和 b.py 都导入 c。你有三个解决方案: 1) b 导入 c,a 导入 baz.c 2) 你在 foo/bar 中移动 c。 a.py 导入 c,b.py 导入 .c 3)你把c移到别的地方(比如foo/cpackage/c.py),然后a和b都导入cpackage.c
我倾向于选择 3),但是如果 c.py 作为独立模块没有意义,例如因为你想将它“私有”到 bar 包中,我会优先选择 1)。
还有很多类似的案例。我的经验法则是至少减少依赖和交叉的数量,以防止高度分支、高度交织的设置,但我可能是错的。
【问题讨论】:
标签: python