经过多年将Delphi程序编码为表单和数据模块中不可测试的代码(包括全局变量),唯一的类就是表单本身,包含表单UI本身所需的所有代码。
如何将代码转换为一组执行实际工作的类?我是否需要停止使用数据源/数据集并在类中执行所有操作?我需要ORM吗?
通常零需要在表单中重用代码,因此将逻辑转换为类是否有意义?
答案 0 :(得分:28)
如果我遇到责任过多的表格(或其他类别),我通常会遵循以下模式:
有些情况下单个类是不够的,因此创建更多类没有问题。这些类可以有其他类。
通过这些步骤,您可以解决大部分问题。
答案 1 :(得分:8)
首先,我强烈建议您阅读Martin Fowler撰写的书Refactoring。
这将使您真正了解如何以最佳方式明智地引入对现有(非OO)代码的更改以提高可维护性。
在您明确了解将为您的申请带来哪些好处(如果有的话)之前,我不会查看ORM。
答案 2 :(得分:5)
我在一个应用程序中遇到过这样的问题,我开始做以下事情:
我使用了静态方法,因为您更容易从事件中删除代码,只需调用它们而不需要为每个操作创建/ Free对象。原始设计并非旨在将表单与业务逻辑代码分开。
最终的应用程序并不是完整的OO,但最不容易测试方法而不需要像之前那样与表单和事件进行交互。
有时你觉得如果你从头开始重新设计应用程序,那么做出更改以使其成为真正的OO设计会更容易。
答案 3 :(得分:4)
另一本我高度强烈推荐的书 - 我个人认为比福勒的“通用”重构书更合适 - "Working Effectively with Legacy Code" by Michael Feathers。它真实地展示了你在做这类工作时会遇到的主要障碍。哦,并且:重构遗留代码对你的心灵来说可能相当困难。我希望你可以处理挫折...我喜欢这句话(不记得我从哪里得到它):“上帝能够在6天内创造世界,只因为没有遗留代码”。祝好运。 ;)
答案 4 :(得分:4)
导入Modelmaker是我遇到现有Delphi项目时的第一个动作。 Modelmaker将帮助您重构您的代码,因为:
Modelmaker的基本功能易于学习。模型制作者就像任何其他优秀的生产力工具一样 - 你投入的越多,你就越能摆脱它。 模型制造者不是免费的,但在提高生产力方面很容易为自己买单。 我还没有找到一个更好的工具来重构遗留的Delphi代码。他们提供免费试用和一些体面的教程电影。 给模特制作人一个尝试,祝你好运......
答案 5 :(得分:1)
在了解了重构代码所需的内容后,如果您需要OPF / ORM,我建议Jazz SDK