我正在使用 PyGTK 开发一个桌面应用程序,并且似乎遇到了我的文件组织的一些限制。到目前为止,我已经以这种方式构建了我的项目:
- application.py - 保存主要的应用程序类(大多数功能例程)
- gui.py - 拥有一个松耦合的 GTK gui 实现。处理信号回调等。
- command.py - 包含不依赖于应用程序类中数据的命令行自动化功能
- state.py - 保存状态数据持久性类
到目前为止,这已经很好地发挥了作用,但此时 application.py 开始变得相当长。我查看了许多其他 PyGTK 应用程序,它们似乎有类似的结构问题。在某个时刻,主模块开始变得很长,并且没有明显的方法可以在不牺牲清晰度和面向对象的情况下将代码分成更窄的模块。
我考虑过让 GUI 成为主要模块,并为工具栏例程、菜单例程等设置单独的模块,但那时我相信我将失去 OOP 的大部分好处并最终得到一个一切都引用一切的场景.
我应该只处理一个很长的中央模块,还是有更好的方式来构建项目,这样我就不必过多地依赖类浏览器?
编辑我
好的,关于所有 MVC 的东西都采取了这一点。我的代码中确实有一个粗略的 MVC 近似值,但不可否认,通过进一步分离模型和控制器,我可能会获得一些进展。但是,我正在阅读 python-gtkmvc 的文档(顺便说一句,这是一个很棒的发现,感谢您参考它),我的印象是它并不能解决我的问题,而只是形式化它。我的应用程序是一个单一的空地文件,通常是一个窗口。因此,无论我多么严格地定义模块的 MVC 角色,我仍然会让一个控制器模块完成大部分工作,这几乎就是我现在所拥有的。诚然,我对正确的 MVC 实现有点模糊,我会继续研究,但事实并非如此
我应该为窗口的不同部分(工具栏、菜单等)考虑单独的控制器/视图对吗?也许这就是我在这里所缺少的。似乎这就是 S. Lott 在他的第二个要点中所指的内容。
感谢您到目前为止的回复。