Dan*_*ski 7 delphi delphi-units
我个人喜欢它,如果我的uses条款尽可能小,但在许多应用程序中,真正的大单位(在膨胀可执行文件方面)喜欢Forms或VirtualTrees至少在另一个单位需要.
所以:如果我清理我的uses条款,即使最终没有从项目中移除任何单位,它会有所不同吗?如果真是这样,那么是以哪种方式?并且:清理uses条款应该尽快完成,还是等到我偶然找到一个未使用的单位?
Mas*_*ler 14
如果它在项目的其他地方使用,它将没有太大的区别,除了生成更容易阅读的更清晰的代码.但是,它可能会影响一些小事.
编译顺序:编译器根据哪些单位使用哪些单位来决定编译单位的顺序.如果从早期单元的uses子句中删除单元,则可能导致在编译循环中稍后编译使用过的单元.这听起来可能不是很多,但请记住,初始化部分的运行顺序与编译单元的顺序相同.不过,这对你的项目来说真的不应该有太大作用.
CodeInsight:当您提取代码完成下拉列表时,它将根据当前可用的所有单位提供选择.你可以通过减少你正在使用的单位数来减少必须过滤的选择次数 - 从而减少抽血的时间!(不,我不苦.你为什么问?)
一般没有.如果一个单元在项目的任何地方使用过一次,那么使用它的次数并不重要.相反,如果一个单元至少在某个地方仍然使用了一个单元,那么移除单元的位置并不重要.编译后的程序行为相同,大小大致相同.
唯一的区别在于单元初始化和完成部分的顺序.单位使用顺序会影响这些部分的执行顺序,尽管从未记录过精确的效果(因此尽量不要依赖初始化顺序).
但我仍然鼓励您清理单位清单,原因同样是鼓励您清理变量清单和参数列表.当你摆脱不需要的东西时,它可以更容易地阅读你保存的代码,因为你可以合理地确信你正在阅读的内容可以准确地描述代码的作用.如果您的代码提到了一堆单位但从未真正使用它们,那么下次您或其他人查看代码时,您将花费一些时间来尝试查找代码使用设施的位置,这是一个很好的更改这些单位.(你会对自己说,"嗯,这段代码包含了Graphics,但是我看不出它在哪里画了什么.我最好再看看,因为我不认为这段代码有这样的责任.嘿,同事 - 你可以抽出一些时间来告诉我这个单位在哪里画东西吗?")
是的,有一个经常被忽视的技巧,可以在后面咬你:
如果有一些初始化/终结代码,即使你的单元中没有其他代码调用的代码也始终执行(并且总是包含该单元)而你认为它不会).因此,删除项目中不需要的单元可以产生显着的差异.
另一件值得注意的事情是,单位的顺序决定了当两个不同单位中存在同音异义词时编译器选择的标识符,并且您在不使用单位名称前缀的情况下调用它们(您应该始终将其作为最佳实践).
除此之外,正如Mason和Rob指出的那样,单位顺序会影响它们的编译顺序以及初始化/完成的顺序.
至于代码洞察,如果删除不必要的单位会更快,但如果项目中使用的所有单位都明确地添加到dpr而不是依赖于搜索路径来查找它们,当它们通过另一个隐含地添加时,它会更快单元.
小智 5
我强烈不同意梅森和罗布:它确实有所作为!
依赖性降低.
正如梅森和罗布所解释的那样,差异不在当前项目中.相反,区别在于您的NEXT项目.如果在(客户端)单元中保留不必要的(服务器)单元,那么在另一个项目中使用该客户端单元也会引入依赖关系.如果刚刚拉入的单位没有其他合理的客户单位,那么你增加了膨胀.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |