Delphi接口单元的命名约定

时间:2014-03-18 17:01:39

标签: delphi interface naming-conventions

对于仅包含接口定义的Delphi单元,是否有广泛使用的命名约定?

我具体询问是否存在任何已成为Delphi社区普遍惯例的内容。我询问您对什么是一个好的约定,甚至一定是您个人使用的意见。你的回答需要证明你所描述的是一个广泛的惯例,说明你曾经看过它的用途。

为了更清楚地说明问题,我将描述我的组织的本土会议以及为什么我对此不满意:如果一个班级被称为TFoo,那么它的单位将会被称为uFoo。由TFoo实现的界面可能会被称为IFoo,但显然我无法将此单元保存为iFoo,因为该界面已经具有该名称。

换句话说,我试图完成这个网格:

+--------+---------------+---------------+
!        !  Class        !  Interface    !
+--------+---------------+---------------+
!        !               !               !
! Name   !  TFoo         !  IFoo         !
!        !               !               !
+--------+---------------+---------------+
!        !               !               !
! File   !  uFoo.pas     !  ????.pas     !
!        !               !               !
+--------+---------------+---------------+

2014年3月19日更新,更清楚地表明我正在寻找基于事实的(不是基于意见的)答案。

4 个答案:

答案 0 :(得分:2)

我会使用Foo_Intf作为文件名。我看到RemObjects在自动生成单位时使用它。我认为我工作的程序员从RO中选择了它,然后我从它们那里拿起它。这对我来说很有意义,因为它使得查找界面变得容易。

答案 1 :(得分:1)

我会将uFooAPI.pas用于声明抽象接口的单元。这是我自己的惯例。

答案 2 :(得分:1)

AFAIK没有单位的命名惯例。

但是让我们来看看我们试图用接口做什么。

如果我们有一个接口IFoo,我们将通过接口与Foo的行为进行对话。实现IFoo的每个类都不是Foo,而的行为类似于Foo

对我来说,如果IFoo只有一个单位,我会将此单位命名为Foo

unit Foo;

interface

type
  IFoo = interface
    ['{GUID}']
    procedure Bar;
  end;

implementation

end.

也许有一个起始IFoo实施类

unit AbstractFoo;

interface

uses Foo;

type
  TAbstractFoo = class abstract( TInterfacedObject, IFoo )
  public
    procedure Bar; virtual; abstract;
  end;

interface

end.

或使用IFoo

的课程
unit FooUser;

interface

uses Foo;

type
  TFooUser = class
  public
    procedure Consume( Foo : IFoo );
  end;

implementation

procedure TFooUser.Consume( Foo : IFoo );
begin
  Foo.Bar;
end;

end.

大多数时候我们只使用接口而不是其中一个实现类,这使我再次命名接口声明单元Foo

答案 3 :(得分:0)

Type of unit           prefix
general unit           u_
interface declaration  i_
form                   w_
data module            d_
frame                  wf_

(这是我们的内部惯例,我不知道是否有其他人使用它。我把这个约定从另一家被其他公司收购的公司带到我现在的雇主,但我不认为他们仍然使用Delphi。如果他们这样做,他们可能仍然会使用它。)