我正在寻找一些关于构建 Delphi 程序以实现可维护性的建议。尽管我第一次学习使用 Turbo Pascal 编程,但我在主要使用 C/C++ 几十年后才开始接触 Delphi 编程,所以我对基本语言并不感到不舒服。在我之前使用 C++ 和 C# 的经验中,我通过使用 cxxtest 和 NUnit 成为了 TDD 转换者。
我继承了我现在负责维护的这个程序。它主要由表单和几个数据模块组成。应用的业务逻辑和数据访问主要分散在表单上,数据模块多半只是全局ADO对象生存的地方。数据库访问一般通过引用 TADOQuery 或 TADOCommand 的全局实例,将 SQL 文本直接格式化为对象的相关属性,并调用其 Open 或 Execute 方法来完成。
我正在尝试将业务逻辑进行一定程度的封装,以便对其进行单元测试。我已经看到了这个答案,就从表单中抽象逻辑而言,它非常有意义。我想知道数据访问的最佳实践是什么。我的想法是数据模块应该公开一种特定于应用程序的迷你 API(可能带有所有虚拟方法),以便可以用模拟对象替换它们以进行测试。这个其他答案的链接展示了一些示例,让我相信自己走在正确的轨道上,但我仍然有兴趣查看有关数据模块的某种最佳实践文档。我可以通过 Google 找到的大多数页面都提供了相同类型的示例,这些示例介绍了您在设计时可以做的所有很酷的事情,例如将数据绑定控件连接到查询之类的事情,我对这些事情不太感兴趣在这一刻。