gpt4 book ai didi

python - 将代码拆分为模块(约定)

转载 作者:行者123 更新时间:2023-12-01 09:08:17 35 4
gpt4 key购买 nike

所以我进行了一些搜索,但在 Google 或 PEP 上找不到任何讨论此问题的内容。
我正在使用 tkinter 做一个项目,我有一个文件,它是项目的一部分,只有 200 行代码(不包括所有注释掉的代码)。虽然整个文件与项目的 GUI 部分相关,但对我来说感觉有点长、有点宽泛。
我最终将文件分成 4 个不同的文件,每个文件都有自己的 GUI 部分。
基本上,该目录如下所示:

project/
guiclasses/
statisticsframe.py
textframes.py
windowclass.py
main_gui.py
...

statisticsframe 有一个框架类,用于显示有关内容的统计信息。
textframes 包含 3 类包含文本区域的框架,其中一个继承 Frame,其他继承第一个。
windowclass 基本上创建窗口的根以及 tkinter GUI 的所有常规初始化。
main_gui 实际上并不是名称,它只是将上述三个组合起来并运行 mainloop()

总体而言,每个文件现在有 40-60 行代码。

我想知道是否有与此相关的约定。大多数语言的经验法则是,如果您可以在其他地方重用函数/类,那么您应该拆分,尽管在 Python 中这不是什么问题,因为您可以从模块导入特定的类和函数。

抱歉,如果它不够连贯,现在已经快凌晨 3 点了,它就在我的脑海里。

最佳答案

我不熟悉 tkinter,所以我的建议相当广泛。

您可以使用任何您认为更好的拆分为模块,但是

  • 考虑到可读性,尝试使名称连贯,不要重复:guiclasses - 你的整个程序是关于 GUI 的,并且显然在某个地方有类,为什么要在名称中重复它?想象一下在导入中输入所有内容,使输入有意义
  • 扁平结构比嵌套好,三个模块不必再去子模块
  • 最好的分割是跨抽象层(这可能是最难的,并且特定于 tkinter)
  • 模块中的任何内容都应该相当自给自足,并且与程序的其他部分完全隔离
  • 模块应该成为单元测试的良好实体(例如共享相同的装置)
  • 你能为模块编写一个易于理解的文档字符串吗?那么这是一个很好的。
  • 尝试通过例子学习,我经常在 Barry Warsaw 寻求命名和包结构的智慧 mailman ,也许您可​​以尝试使用 tkinter 查找一些信誉良好的存储库来跟踪(例如 IDLE?)。

从纯粹的语法角度来看,我会将模块命名为:

- <package_name>
- baseframe
- textframe
- window
- main

关于python - 将代码拆分为模块(约定),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867912/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com