一、匈牙利命名法
Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。
匈牙利命名法基本原则是:变量名=属性+类型+对象描述,通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。匈牙利命名法中常用的小写字母的前缀:
前缀 |
数据类型 |
说明 |
a |
Array |
数组 |
b |
BOOL(int) |
布尔(整数) |
by |
Unsigned Char (Byte) |
无符号字符(字节) |
c |
Char |
字符(字节) |
cb |
Count of bytes |
字节数 |
cr |
Color reference value |
颜色(参考)值 |
cx,cy |
Count of x,y (Short int) |
x,y的集合(短整数) |
dw |
DWORD (unsigned long) |
双字(无符号长整数) |
f |
Flags (usually multiple bit values) |
标志(一般是有多位的数值) |
fn |
Function |
函数 |
g_ |
global |
全局的 |
h |
Handle |
句柄 |
i |
Integer |
整型 |
l |
Long int |
长整数 |
lp |
Long pointer |
32位的长整数指针 |
m_ |
Data member of a class |
一个类的数据成员 |
msg |
message |
消息 |
n |
Short Int |
短整型 |
np |
Near Pointer |
近指针 |
p |
Pointer |
指针 |
s |
string |
字符串型 |
sz,str |
Zero terminated String |
以NULL作结尾的字符串型 |
tm |
Text metric |
文本规则 |
u |
Unsigned int |
无符号整数 |
ul |
Unsigned long (ULONG) |
无符号长整数 |
w |
WORD (unsigned short) |
无符号短整数 |
x,y |
x,y coordinates (short) |
x,y坐标值(短整数) |
v |
void |
空 |
…… |
…… |
…… |
骆驼式命令法,正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:
printEmployeePaychecks();
print_employee_paychecks();
第一个函数名使用了骆驼式命名法——函数名中的每一个逻辑断点都有一个大写字母来标记;第二个函数名使用了下划线法----函数名中的每一个逻辑断点都有一个下划线来标记。
骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它使用得当相多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍
三、帕斯卡(pascal)命名法
与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写
如:public void DisplayInfo();
string UserName;
二者都是采用了帕斯卡命名法.,在C#中,以帕斯卡命名法和骆驼命名法居多。 在以前版本的Visual Studio中,微软曾建议使用匈牙利命名法来写代码,并鼓励开发这位写出统一格式的代码而使用相同的法则。在最近发布的.NET和它的编程语言中,微软更换了他的这一法则。 在C#中,以帕斯卡命名法和骆驼命名法居多。 以下就是 帕斯卡命名法和骆驼命名法的具体使用。
编程规范 |
|||
类型 |
命外规则 |
说明 |
|
命名空间 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 |
转载自:http://shitou7630.blog.163.com/blog/static/3269953620126230351197/