Kro*_*ica 9 delphi coding-style
在Delphi编码标准中,在函数/过程中在参数名之前添加A前缀的规则是什么?
例如:
constructor Create(AOwner: TComponent); override;
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); virtual;
procedure AddAncestor(Component: TComponent); //No A prefix, why?
function FindClass(const ClassName: string): TPersistentClass; //No A prefix, why?
function GetClass(const AClassName: string): TPersistentClass;
procedure StartClassGroup(AClass: TPersistentClass);
procedure GroupDescendentsWith(AClass, AClassGroup: TPersistentClass);
Run Code Online (Sandbox Code Playgroud)
更多的例子是在Delphi公共类中(参见类,表格等).因此我的问题 - 什么时候添加和什么时候不添加?
klu*_*udg 19
'A'代表'论证'.另外,'F'代表'Field','T'代表'Type','E'代表'Exception','I'代表'Interface'.
没有规则何时添加'A'前缀,何时不添加.
它通常在名称冲突时完成.例如,在TComponent构造函数中,想象它是否被写入:
constructor TComponent.Create(Owner: TComponent)
Run Code Online (Sandbox Code Playgroud)
现在,Owner参数隐藏了实例的Owner属性.要参考该属性,您必须编写Self.Owner.
在VCL源代码中,您可能会发现在存在此类冲突时使用A前缀,而在没有冲突时则不使用.但该公约的适用将存在不一致之处.
我更希望Embarcadero Pascal风格指南会就此事说些什么,但遗憾的是它保持沉默.
我个人从来没有在我写的代码中使用A前缀.根据我的经验,隐藏总是很好,因为您通常想要引用的是参数而不是实例成员.如果您需要引用实例成员,则Self.Name可以消除歧义.
所以,没有规则,只是由个人偏好决定的惯例.做出自己的选择并坚持下去.一致性远比您是否选择使用此类命名约定更为重要.