【问题标题】:What is the recommended naming for scoped units in Delphi XE2 onwards?Delphi XE2 及以后的作用域单元的推荐命名是什么?
【发布时间】:2012-01-02 22:05:12
【问题描述】:

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

我喜欢使用这种描述性名称的能力,但我对命名约定和首选目录结构感到困惑。

  1. 应该是

    • com.company.project.Security.Compression.ZLib.pas 就像在 Java 中一样

    • System.Security.Compression.ZLib.pas 就像在 .NET 中一样

    • 还是别的什么?

  2. 我应该把我的文件放在这样的目录结构中

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

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

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

请指教。

【问题讨论】:

  • 这完全取决于你。做最适合您需求的事情。您可能需要提出更具体的问题才能获得您希望的答案。

标签: delphi scope naming-conventions delphi-xe2


【解决方案1】:

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

我强烈建议您为所有内部创建的单元使用一个全局前缀。您可以使用公司名称的缩写形式,或者您的全名作为您的偏好。我会推荐简单易读且易于输入的内容。

如果您在少数几个主要项目中工作,则将遵循项目特定的名称,例如用于 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。小部件.系统)

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    即便如此,我也不会将您的单位命名为 System.MyUnit.pas,因为我认为前缀应该仅限于官方的 Delphi System 单位。如果您真的必须采用这种新约定(我个人认为我不会),我会按照以下方式命名您的单位

    MyCompany.UnitName.pas

    MyComponentLib.UnitName.pas

    除非您发布双框架库,否则我认为没有必要在名称中添加 VCL 或 FMX。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多