匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法 C#命名规范
时间:2011-05-01 来源:望穿秋水
一、匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中。
Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。
匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
匈牙利命名法中常用的小写字母的前缀:
前 缀 类 型
a 数组 (Array)
b 布尔值 (Boolean)
by 字节 (Byte)
c 有符号字符 (Char)
cb 无符号字符 (Char Byte,没有多少人用)
cr 颜色参考值 (ColorRef)
cx,cy 坐标差(长度 ShortInt)
dw Double Word
fn 函数
h Handle(句柄)
i 整型
l 长整型 (Long Int)
lp Long Pointer
m_ 类的成员
n 短整型 (Short Int)
np Near Pointer
p Pointer
s 字符串型
sz 以null做结尾的字符串型 (String with Zero End)
w Word
二、骆驼命名法:
骆驼式命令法,正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:
printEmployeePaychecks();
print_employee_paychecks();
第一个函数名使用了骆驼式命名法——函数名中的每一个逻辑断点都有一个大写字母来标记;第二个函数名使用了下划线法----函数名中的每一个逻辑断点都有一个下划线来标记。
骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft
Windows这样的环境中,它使用得当相多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍。
三、帕斯卡(pascal)命名法:
与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写
如:public void
DisplayInfo();
string UserName;
二者都是采用了帕斯卡命名法.
在C#中,以帕斯卡命名法和骆驼命名法居多。
再转一篇总结的不错的文章: http://shy-feng.blog007.com/archives/2008/2008815173010.html
在以前版本的Visual Studio中,微软曾建议使用匈牙利命名法来写代码,并鼓励开发这位写出统一格式的代码而使用相同的法则。在最近发布的.NET和它的编程语言中,微软更换了他的这一法则。如果你用过Delphi编程,你会看到新的法则与Delphi(Pascal)有些相似。
从我学习编程以来Visual Studio是6.0,之后有2003版和2005版,到现在有2008版了; .NET framwork类库也从以前的1.1、2.0、3.0到现在的3.5,我学C++之时用的是Visual Studio 6.0,那时老师还介绍使用匈牙利命名法,不过之后到.NET平台下微软不建议用匈牙利命名法了,这可以从微软根据其所推出产品的示例和.NET framwork类库参考看到,在C#中,以帕斯卡命名法和骆驼命名法居多。我个人习惯骆驼命名法,事实上在.NET framwork类库参考中使用的就是帕斯卡命名法和骆驼命名法。
以下就是 帕斯卡命名法和骆驼命名法的具体使用。
类型 |
命外规则 |
说明 |
|
命名空间 namespace |
Pascal |
以.分隔,其中每一个限定词均为Pascal命名方式 如ExcelQuicker.Work |
|
类 class |
Pascal |
每一个逻辑断点首字母大写 如public class MyHome |
|
接口 interface |
IPascal |
每一个逻辑断点首字母大写,总是以I前缀开始,后接Pascal命名 如public interface IBankAccount |
|
方法 method |
Pascal |
每一个逻辑断点首字母大写 如private void SetMember(string) |
|
枚举类型enum |
Pascal |
每一个逻辑断点首字母大写 |
|
委托 delegate |
Pascal |
每一个逻辑断点首字母大写 |
|
局部变量 方法的参数 |
Camel |
首字母小写,之后Pascal命名 如string myName |
|
1、 |
成员变量前加前缀 _ |
||
2、 |
接口的名称加前缀I |
||
3、 |
自定义的属性以Attribute结尾,如: public class AuthorAttribute :Attribute { } |
||
4、 |
自定义的异常以Exception结尾,如: public class AppException: Exception
{ |
||
5、 |
方法的命名。一般将其命名为动宾短语,如: ShowDialog() CreateFile() |
||
6、 |
代码的缩进。要用Tab,而不要用space. |
||
7、 |
局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。 |
||
8、 |
所有的成员变量声明在类的顶端,用一个换行把它和方法分开。 |
||
9、 |
用有意义的名字命名namespace,如:产品名、公司名。 |
||
10、 |
生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string。 |
||
11、 |
始终使用”{ }”包含if下的语句,即使只有一条语句。 |
||
12、 |
把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion |