面向对象编程:良好的类设计
我的问题和这个有关:一个可以为类的方法构建依赖图的Python工具。
因为找不到合适的工具,我自己写了个简单的程序:我用了编译器模块,把源代码解析成一个抽象语法树,然后遍历这个树来收集类方法之间的依赖关系。我的脚本生成了一个输入文件给graphviz,这个工具用来生成一个依赖图,长得像这样。
到这里我遇到了瓶颈。我意识到我不知道该怎么重构这个类,让它变得简单一些。我根本不知道我应该朝哪个方向努力。比如,在关系数据库的理论中,有一些简单的规则可以用来把数据库调整到标准形式。那么,关于良好的类设计(特别是方法之间的依赖关系)有没有类似的理论呢?这个话题有没有地方可以学习?
5 个回答
1
设计模式已经成为良好类设计的标准。一般来说,每种模式都有特定的使用场景或情况。如果你能在自己的代码中找到这样的场景,就可以利用这种模式来创建更合理的结构,通常这样做还能减少代码之间的依赖关系。
重构是你用来进行这些大规模改动的工具。一个好的集成开发环境(IDE)会帮助你进行重构。
3
在设计类的时候,往往很难说什么是“正确”的,什么是“错误”的。关于这个话题有很多指导原则、设计模式和建议,但归根结底,我认为这更多是基于你过去项目的经验。我的经验是,不用太担心这些问题,可以逐步小步改进你的代码和结构。多尝试一下,看看一些想法或改变的效果如何。当然,向别人学习总是个好主意,多读一些代码,分析它,尽量理解其中的内容。 :)
如果你想了解一些理论,我推荐Craig Larman的《应用UML和模式:面向对象分析与设计及迭代开发入门》 亚马逊。这本书涵盖了你问题中的几个部分,给出了一些大致的指导,并通过一个示例应用来展示这些内容。我觉得这本书不错。
你能把你的应用上传到某个地方吗?比如GitHub之类的,或许你可以请求一些具体的建议。