是否有人建议重新创建新项目并重新添加源代码,以及为什么



我们有一个大型SQL驱动的软件系统,它从Delphi 1开始就存在了。它在所有不同的项目中使用相同的原始项目文件。我们最近开始升级到DelphiXE2,我一直在考虑创建新的项目文件并重新添加所有源代码的想法,以确保他们获得新DelphiXE2项目的推荐默认值。

有人推荐这个吗?风险是什么?显然,重新定义版本号、项目名称/描述/公司信息等是一项艰巨的任务。但让我害怕的是原始项目的规模。3个主要的可执行文件加上许多其他文件,总共可能有近300万行代码。

我之所以考虑这样做,主要是因为我看到了新的DelphiXE2项目是如何根据平台和版本(Win32、Win64、Debug、release等)自动创建子目录的。我们的项目目前一团糟,我一直在努力清理它。

那么你认为这里面有什么风险呢?为什么或者为什么这不是一个好主意?除了"重置"默认值,还有其他选择吗?

重新创建项目文件应该不会有什么影响,但也不应该添加任何有用的内容。我会认真质疑你的动机,我会考虑只改变需要改变的东西:

我们的项目目前一团糟,我一直在努力清理。

任何参与过一个大项目的人都可能在某个时候这样想。如果某个地方真的有一些"混乱",那就是在项目的源文件(PAS、DFM)中,而不是在实际的项目文件中。重构可能应该走另一条路。重新组织源文件(如果需要),删除被证明是多余的文件,项目文件将立即反映新发现的清洁度。

显然,这是一项艰巨的任务,重新定义版本号、项目名称/描述/公司信息等。

这是项目选项中的全部内容。老实说,我怀疑这将是你需要做的最困难的事情。你更有可能发现对第三方组件和其他内部项目的硬编码依赖。那些将是一件很难追踪的事情,因为你会一次又一次地点击ReBuild,修复编译器抱怨的一个单元。

其思想是,项目文件列出了组成项目的文件,并包括一组最小的编译器选项和定义。如果您重新创建项目文件,您最终会将所有编译器选项和定义添加回中,还将每次添加一个文件,因为该列表实际上是在组成项目的文件的uses子句中编码的。唯一无法返回的文件是那些可以在搜索路径上、项目文件夹中找到的文件,以及那些真正多余的文件。如果你想删除多余的文件,这不是办法。最好研究一下列表分析器的一些用途。

我之所以考虑这样做,主要是因为我看到了新的Delphi XE2项目是如何根据平台和版本(Win32、Win64、Debug、release等)自动创建子目录的

无需为此重新创建项目文件,只需将项目"编译器选项"中的Output DirectoryUnit Output Directory更改为:

.$(Platform)$(Config)

如果您要重新创建.dpr,需要注意的一件事是确保您的单元没有任何隐藏的相互依赖关系,这些相互依赖关系会突然出现,并使您的应用程序以奇怪的方式出现错误行为。

事实上,我们最近正好遇到了这种情况。为了避免为什么这样做的背景故事,我的一位同事创建了一个新项目,并重新添加了当前(遗留)项目的所有单元。重建后,新的可执行文件引发访问冲突,然后在屏幕上显示一个对话框提示,他找不到访问原因。

事实证明,导致AVs的项目之间存在相当多的依赖关系(例如,数据模块中表单的OnCreate调用方法),并且首先创建了错误的表单,使其成为应用程序的主表单。原始项目源按特定顺序添加了所有项目以确保这一点。当他重新创建这个项目时,他将Explorer中的所有单元按其原始顺序(按字母顺序)添加。

现在,您可以将此作为重构应用程序的机会,以确保这些时间问题和依赖关系不会成为问题,并可能禁用表单自动创建,以便在应用程序中唯一活动的表单是您在任何给定时间点所需的表单。或者,您可以直接仔细修改选项以匹配新的默认值,如果它们对您的项目比旧的更有意义的话。

虽然它应该不会有什么伤害,但我不确定你会有多大收获。

花在这样一个想法上的精力和时间似乎是一个成功的项目,我认为这没有任何好处

最好花些时间在你的产品上做出可衡量的改进。尝试重新创建项目可能是浪费时间。

最新更新