我正在寻求有关如何构建易于维护的Delphi程序的建议。在大约二十年主要使用C/C++之后,我开始接触Delphi编程,尽管我最初是通过Turbo Pascal学习编程的,因此我对基本语言并不感到不适。在我以前使用C++和C#的经验中,通过使用cxxtest和NUnit,我成为了一个TDD信徒。
我继承了这个现在由我负责维护的程序。它主要由各种表单和一些数据模块组成。应用程序业务逻辑和数据访问主要分散在各个表单中,而数据模块主要只是全局ADO对象的存放位置。通常通过引用TADOQuery或TADOCommand的全局实例,将SQL文本格式化到对象的相关属性中,并调用其Open或Execute方法来进行数据库访问。
我试图将业务逻辑封装到一定程度以进行单元测试。我看到了这个答案,它非常合理,可以将逻辑从表单中抽象出来。我想知道数据访问的最佳实践是什么。我的想法是,数据模块应该公开一种应用程序特定的小API(可能具有所有虚拟方法),以便可以将其替换为用于测试的模拟对象。在另一个答案中的链接显示了一些示例,这使我相信我正在正确的方向上,但我仍然对看到某种数据模块最佳实践文档感兴趣。通过Google可以找到的大多数页面都介绍如何将数据绑定控件与查询进行挂钩等设计时酷炫的功能,而这并不是我目前非常感兴趣的。