为什么某些参数在Delphi中以“A”为前缀?

前端之家收集整理的这篇文章主要介绍了为什么某些参数在Delphi中以“A”为前缀?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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);

更多的例子是Delphi公共类(参见类,表格等).因此我的问题 – 什么时候添加和何时添加

解决方法

通常在会出现名称冲突时进行.例如,在TComponent构造函数中,想象它是否被写入:
constructor TComponent.Create(Owner: TComponent)

现在,Owner参数隐藏了实例的Owner属性.要参考该属性,您必须编写Self.Owner.

在VCL源代码中,您可能会发现在存在此类冲突时使用A前缀,而在没有冲突时则不使用.但该公约的适用将存在不一致之处.

我更希望Embarcadero Pascal style guide会就此事说些什么,但遗憾的是它仍保持沉默.

我个人从来没有在我写的代码中使用A前缀.根据我的经验,隐藏总是很好,因为您通常想要引用的是参数而不是实例成员.如果您需要引用实例成员,则Self.Name可以消除歧义.

所以,没有规则,只是由个人偏好决定的惯例.做出自己的选择并坚持下去.一致性远比您是否选择使用此类命名约定更为重要.

原文链接:https://www.f2er.com/delphi/102484.html

猜你在找的Delphi相关文章