这是我从这里开始的讨论的延续。我想找到模块化 Delphi 源代码的最佳方法,因为我在这个领域没有经验。我将不胜感激您的所有建议。
让我把我已经写在那里的东西贴出来。
我工作的公司开发的软件由 100 多个模块组成(其中大部分是不同设备的驱动程序)。它们中的大多数共享相同的代码 - 在大多数情况下是类。问题是这些类并不总是放在单独的、独立的 PAS 单元中。我的意思是共享代码通常被放入包含特定于模块的代码的单元中。这意味着当您修复共享类中的错误时,仅将其定义的 PAS 单元复制到所有软件模块中并重新编译它们是不够的。不幸的是,您必须将固定的代码片段一个接一个地复制并粘贴到适当的单元和类中。这需要很多时间,这就是我想在不久的将来通过选择正确的方法来消除的问题 - 请帮助我。
我认为使用与 EXE 一起分发的 BPL 将是一个很好的解决方案,但它有一些缺点,正如前面讨论中提到的那样。最糟糕的问题是,如果每个 EXE 需要多个 BPL,我们的技术支持人员必须知道哪个 EXE 需要哪些 BPL,然后为最终用户提供适当的文件。只要我们没有软件更新程序,这对我们的技术人员和最终用户来说都是一笔大买卖。他们肯定会迷路和生气:-/。
还可能出现兼容性问题 - 如果一个 BPL 由多个 EXE 共享,则对该 BPL 的修改可能对一个 EXE 有利而对其他一些 EXE 不利。
那么我应该怎么做才能在这么多项目中更快地修复错误?我想到了以下方法之一。如果您有更好的想法,请告诉我。
- 将共享代码放入单独和独立的 PAS 单元中,因此当其中一个有错误修复时,将其复制到所有项目(覆盖旧文件)并重新编译所有项目就足够了。这意味着每个单元的复制次数与使用它的项目数量一样多。
就很少修改的代码而言,此解决方案似乎没问题。但我们也有具有通用功能和程序的 PA 单元,这些单元经常进行修改。每次有人向此文件添加新功能时,都无法执行相同的过程(复制和重新编译这么多项目)。
- 为所有共享代码创建 BPL,但将它们链接到 EXE,以便 EXE 是独立的。
对我来说,这似乎是现在最好的解决方案,但也有一些缺点。如果我在 BPL 中修复错误,每个程序员都必须在他们的计算机上更新 BPL。如果他们忘记这样做怎么办?但是,我认为这是一个小问题。如果我们注意互相通知变化,一切都应该没问题。你怎么看?
- 最后一个想法,由 CodeInChaos 提出(我不知道我是否理解正确)。在项目之间共享 PAS 文件。这可能意味着我们必须将共享代码存储在一个单独的文件夹中,并让所有项目都在那里搜索该代码,对吧?我猜,每当需要修改项目时,都必须从 SVN 连同共享文件夹一起下载。共享代码中的每次更改都必须导致重新编译使用该代码的每个项目。
请帮我选择一个好的解决方案。我只是不希望公司因为一种愚蠢的软件开发方法而在错误修复上浪费更多的时间和金钱。到目前为止,没有人关心它,您可以想象它会导致多少问题。
非常感谢你。