s 单词,class 要小写: TMyClass = class 如果你的类是从祖先继承来的,则需要加入包含着祖先类的左右括号: TMyClass = class(TObject) 范围指示符离页边两个空格,并以下面的顺序出现: TMyClass = clss(TObject)
private protect public published end; 数据通常只在 private 段声明,并且它们的标识符以"F"开始。所有此类的声明离页边 4 个空格:
TMyClass = class(TObject) private FMyDate: Integer; function GetDate: Integer; procedure SetData(Value: Integer); public published property MyData: Integer read GetData write SetData; end;
接口遵从同类相同的规则,除了你应当忽略范围指示符和私有数据,并且使用 interface 单
词代替 class 单词。 命名习惯 除了保留字和指示符是小写外,所有的 Pascal 标识符应当使用驼峰式格式,即每个标识符开头字母要大 写,内嵌单词的首字母也要大写,只取首字母的缩写词也一样。 MyIdentifier MyFTPClass 对此规则主要的例外是头文件翻译的情况,应当遵循在原头文件中的命名习惯。例如: WM_LBUTTONDOWN,不要写成 wm_LButtonDown. 除了头文件翻译外,不要使用下划线分割单词。类名应当是名词或名词短语。接口或类的名称依赖于接 口的显而易见的目的、用途。
好的名字: AddressForm, ArrayIndexOutOfBoundsException 低劣的名字: ManageLayout //使用动词短语 delphi_is_new_to_me //使用下划线
3.1 单元命名 参见单元声明
3.2 类/接口命名 参见类/接口声明
3.3 域/字段命名 使用驼峰式格式。以大写的"F"开始,并且在 private 中声明所有的数据,使用属性或获取者(getter)和安 装者(setter)来提供公共的存取操作。例如:使用名字 GetSomething 来命名一个返回内部域/字段值的函 数,使用 SetSomething 来命名一个设置域/字段值的过程。 不要在 const 段全部使用大写,除非是头文件翻译的需要。 Delphi 是在加利福尼亚开发的,所有我们阻止记号的使用,除非是头文件翻译的需要。 正确: FMyString: string; 不正确: lpstrMyString: string; 当然在枚举类型定义中保留了匈牙利命名法: TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkignore, bkAll); 在这种情况下字符 bk 被插入到这个枚举类型的每一个元素前。bk 意味着 ButtonKind。 在考虑命名习惯时,要避免使用单个字符的名称,但零时变量和循环变量除外。 避免使用"l"(L)变量,因为它和"1"(one)无论在打印机还是在显示器上都难以分辨。
3.4 方法命名 方法命名也使用驼峰格式。方法命名习惯同非常量域的命名方法是相同的,但可以从上下文区分它们。 方法命名应当强制使用动词或动词短语。例如: //好的方法命名: ShowStatus, DrawCircle, AddLayoutComponent //差的方法命名: MouseButton //名词短语,没有描述功能 drawCircle //以小写字母开头 add_layout_component //使用了下划线
//以下方法的功能不够明确。 它是开始运行一个服务呢(更好: StartServer)还是判断一个服务是否在运行(更 好:IsServerRunning)? ServerRunning //动词短语,但不是命令 一个获取或者设置一些类属性的方法应当分别被称为 GetProperty 或者 SetProperty, Property 代表该属 性的名称。例如: GetHeight, SetHeight 一个测试类的布尔属性的方法应当被命名为 IsVisible,Visible 代表属性的名称。例如: IsResizable, IsVisible
3.5 局部变量命名 除了不使用"F"外,局部变量的命名规则同域
/字段的命名规则一样。参见 3.3 节。
3.6 保留字 保留字和指示符要全部小写。这有时有些混乱。例如:Integer 是一个标识符,并且以首字母