从Delphi XE2开始,对于作用域单位的建议命名是什么?

时间:2012-01-02 22:05:13

标签: delphi scope naming-conventions delphi-xe2

随着Delphi XE2的出现,Xml.Internal.AdomCore_4_3System.StrUtils等范围内的单位开始流行。

我喜欢使用这种描述性名称的能力,但我很困惑的是命名约定和优先目录结构。

  1. 应该是

    • com.company.project.Security.Compression.ZLib.pas,如Java

    • System.Security.Compression.ZLib.pas,如.NET

    • 或其他什么?

  2. 我应该将文件放在像这样的目录strcuture中吗?

    • System\Security\Compression\System.Security.Compression.ZLib.pas

    • 或只是根文件夹中的System.Security.Compression.ZLib.pas

  3. 看看Embarcadero组织他们的单位的方式我留下的印象是他们只是保留目录结构,如Delphi 5/6/7 /.../ XE

    请告知。

2 个答案:

答案 0 :(得分:4)

我相信每个人都应该确定他们的单位。 (只有当您是第三方组件供应商时才需要这样做 - 因为您希望减少所使用的任何外部设备上的名称冲突。)通过确定单元的范围,您将需要很长的路要防止单元命名的问题。

我强烈建议您使用全局前缀,用于所有内部创建的单元。您可以使用公司名称的缩写形式或您的全名作为您的首选。我建议只是简单易读的东西。

如果您在少数几个主要项目中工作,那么项目特定的名称将会跟随,例如Widgets产品/项目的Acme.Widgets.SlicerUtils.pas和Wonkers产品的Acme.Wonkers.WippleFactory.pas。

无论命名如何,这都应与您对项目进行版本化和管理源代码的方式密切相关。您希望能够轻松地为Widgets项目的1.2.1.0版本设置构建,以包括与该特定构建相关的所有单元。 (1.2.1.0小部件可能包含系统库的显式修订版1.5.3.0)这需要所有开发人员易于理解并且无法管理。您应该希望一键操作开始处理Widgets项目的1.2.1.1。

子目录问题由一般规则回答,用于将版本控制的项目分隔到它们自己的子目录中。因此,如果您的Acme.System.Security.Compression库是与Acme.System.Security.Auth分开进行版本控制的,那么您将拥有一个root \ System \ Compression子目录结构......但更有可能您只需要Acme。 Widgets.System)

希望这有点帮助。

答案 1 :(得分:3)

与Java和.NET不同,“。”在新的作用域文件名中,在运行时或设计时不提供任何功能。 System.StrUtils.pas可以很容易地被称为System_StrUtils.pas或SystemXStrUtils.pas,我们的情况与现在完全相同。

因此我不建议您采用新的命名约定,除非您是公开分发组件的组件开发人员。

即便如此,我也不会将你的单位命名为System.MyUnit.pas,因为我认为前缀应限于官方的Delphi系统单位。如果你真的必须采用这个新的约定(我个人认为我不会),我会将你的单位命名为

MyCompany.UnitName.pas

MyComponentLib.UnitName.pas

除非您发布双框架库,否则我认为不需要在名称中加入VCL或FMX。