虽然将一些应用程序从Delphi XE2移到XE5,但我注意到列出了许多不再需要的单元。
这将引导我整理界面的使用部分,这导致了我的问题。
界面中是否有推荐的单位订单?我知道它们是以 reverse 顺序加载的,但是我应该由Usnit Scope组织它们。
例如 MyCompany。 *应该在开头还是结尾列出?我应该在系统之前放置 Vcl。 *。 *
更新
一般情况下,我会将我的单位包含在实施中,而不是界面。我正在更多地了解德尔福自己的单位是否存在等级......
例如,我遇到一个问题,在 System.SysUtils之前列出Windows单元更改了所使用的DeleteFile版本...
明确问题
使用顺序是
Winapi *,System。*,Vcl。*,或反过来?
答案 0 :(得分:4)
使用列表重构存在一些风险:
以后使用的单位将覆盖之前使用的单位(范围)的符号(methods
,classes
,vars
,consts
,...)。< / p>
这可以将(或多或少)sublte错误引入您的程序。
重新排序单元可以更改intialization
和finalization
部分的运行顺序。
还有一些优点:
编译速度更快
较小的可执行文件(仅当已移除的单元有initialization
或finalization
)
避免/防止使用圆圈(虽然使用圆圈通常是次优OOP设计的标志)
说完后,在你的问题更新之后:
我倾向于做大卫已经写过的事情:将单位从低级别排序到高级别。
有些工具可以帮助您查找未使用的单位,并以最佳顺序排列使用过的单位。 (Peganza Icarus / PascalAnalyzer和ModelMaker)
很难说编译器真正做了什么(特别是因为现在有多个编译器),但是首先放置依赖性最小的单元应该使编译器更容易构建依赖树。
答案 1 :(得分:3)
阅读http://docwiki.embarcadero.com/RADStudio/XE3/en/Programs_and_Units和http://docwiki.embarcadero.com/RADStudio/XE5/en/Using_Namespaces_with_Delphi条。这两篇文章正好解释了您的要求。
答案 2 :(得分:0)
TMS软件是Delphi的许多组件的作者-在其blogpost上推荐以下顺序:
uses
// 1. fpc/lazarus/delphi units,
// 2. 3rd units,
// 3. my open source units,
// 4. project units
在我看来,这实际上是最好的选择。您可以更改顺序。重要的是要记住,当函数/类名使用的单位大于单位时,将使用最后一个单位。