Delphi命名规范
<div id="cnblogs_post_body"><div id="cnblogs_post_body">参考VCL的代码,结合笔者近两年来的一些经验,可以简单总结出一套Delphi下常用的命名规范。[*]类型定义(type)
[*]包括class、record、枚举、procedure/function变量等所有写在type下的类型定义
[*]用大写的T开头,例如TList(class)、TPoint(record)、TAlign(枚举)、TNotifyEvent(procedure变量)
[*]常量(const)
[*]自定义的简单类型常量(如Integer、Pointer等类型)建议用C开头
[*]也有不少常量是需要根据单词意思推断的,如MaxDateTime(以Max开头,让人从意思上猜到是常量)
[*]字符串常量用S开头(因为字符串常量与简单类型常量在编译时处理方式不同,详情可参考《Delphi源代码分析》2.2.4常量)
[*]类的private成员变量、implementation下的全局变量
[*]用F开头
[*]类里绝对不要出现public成员变量,所有要公开的属性用property或者procedure、function代理出来
[*]interface下的全局变量
[*]interface下最好不要出现全局变量,可以替换为用interface里的function返回implementation下的全局变量值
[*]如果一定要有的话,用G开头
[*]局部变量
[*]用L开头
[*]函数(procedure或function)实参
[*]用A开头
除了这些以外,笔者有一些自己常用的Delphi编程习惯,拿出来跟大家分享,欢迎拍砖。
[*]用项目缩写做名字开头
[*]由于Delphi里没有C++中的namespace或者Java里的package这些概念,所以名字冲突问题比较严重。为了尽量避免这种问 题,可以在一个项目的专有全局类型、常量前面加上项目名称的缩写。例如对于一个叫做MyProject的项目,其下的专属类可以叫做 TMPOneClass,常量可以叫做CMPOneNumber,等等。
[*]用function代替全局变量
[*]当我们需要访问剪切板时,会用到Clipboard这个对象,不知道大家有没有注意到,这其实是一个返回TClipboard对象的function,而且还用到了设计模式的Singleton模式。
[*]由于Delphi里调用无参函数可以不写括号,所以很多时候可以把一个function当做一个变量使用,具体怎么用大家可以发散一下思维,Singleton只是其中一个例子。
[*]用Pascal命名法
[*]上面这些命名方式,总得来说是根据Pascal命名法演化而来的。
[*]Pascal命名法的基本思想就是一个名字里如果包含多个单词,每个单词的首字母都要大写,例如ThisIsAnExample。
[*]不建议使用下划线命名法(如this_is_an_example),主要是因为Delphi的变量名自动补全工具不会自动过滤下划线,手动输入比较累。。。
[*]由于Delphi中变量名对大小写不敏感(如A和a其实是同一个变量,这是跟C语系的语言最大的不同),所以绝对不要尝试用字母大小写区分变量,所有变量最好都用大写字母开头。
页:
[1]