【发布时间】:2011-06-25 17:55:05
【问题描述】:
我正在寻找一些关于构建 Delphi 程序以实现可维护性的建议。尽管我第一次学习使用 Turbo Pascal 编程,但我在主要使用 C/C++ 的几十年后才开始接触 Delphi 编程,所以我对基本语言并不感到不舒服。在我之前使用 C++ 和 C# 的经验中,我通过使用 cxxtest 和 NUnit 成为了 TDD 转换者。
我继承了我现在负责维护的这个程序。它主要由表单和几个数据模块组成。应用业务逻辑和数据访问主要分散在表单上,数据模块大多只是全局ADO对象生存的地方。数据库访问一般通过引用 TADOQuery 或 TADOCommand 的全局实例,将 SQL 文本直接格式化为对象的相关属性,并调用其 Open 或 Execute 方法来完成。
我正在尝试将业务逻辑放入一定程度的封装中,以便对其进行单元测试。我见过this answer,就从表单中抽象逻辑而言,它非常有意义。我想知道数据访问的最佳实践是什么。我的想法是数据模块应该公开一种特定于应用程序的迷你 API(可能带有所有虚拟方法),以便可以用模拟对象替换它们以进行测试。 this other answer 的链接显示了一些示例,这些示例让我相信我走在正确的轨道上,但我仍然有兴趣查看有关数据模块的某种最佳实践文档。我可以通过 Google 找到的大多数页面都提供了相同类型的示例,这些示例介绍了您在设计时可以通过将数据绑定控件连接到查询以及诸如此类的事情来做的所有很酷的事情,我对这些事情不太感兴趣目前。
【问题讨论】:
-
现有表单是使用数据感知控件(TDBEdits)还是标准控件(TEdits)?
-
目前没有数据感知控件。我一直在考虑。
-
数据感知控件往往会使应用程序更难进行单元测试。虽然我自己也是他们的粉丝,但我建议你在这个阶段避开他们。
标签: delphi unit-testing refactoring datamodule