公司内部要统一下编程的命名规范,针对C#,大家帮忙修改一下或提一下意见。
(1) 基本变量命名规定
基本变量命名参照匈牙利命名法,这种命名法的基本原则是:
变量名=属性+类型+对象描述
即一个变量名是由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。
1)属性部分:(加为前缀)
全局变量: g_
类或结构体成员变量: m_
2)类型部分:(加为前缀)
指针: p
句柄: h
布尔型(由bool声明的变量): b
浮点型(由float声明的变量): f
双精度型(由double声明的变量):d
无符号(由uint或ushort声明的变量): u
整型(由int或short声明的变量):i
字符型(由char声明的变量):ch
字节型(由byte声明的变量):bt
字符串型(由string声明的变量):str
3)描述部分:(加为后缀)
临时变量: Tmp
目的对象: Dst
源对象: Src
窗口: Wnd
(2) 类(class)的名称命名规定:
1)类的名称是指用关键字class声明的变量的名称。
2)大小定规定:将标识符的首字母和后面连接的每个单词的首字母都大写。
3)每个类的名称前加大写“C”前缀。
4)用名词或名词短语命名类。
5)类名称不能使用下划线字符。
例如:
合法的类命名:public class CFileStream
非法的类命名:
public class FileStream
public class C_File_Stream
(3) 接口(interface)名称的命名规定:
1)接口的名称是指用关键字interface声明的变量的名称。
2)大小定规定:将标识符的首字母和后面连接的每个单词的首字母都大写。
3)每个接口的名称前加大写“I”前缀。
4)用名词或名词短语命名接口。
5)接口名称不能使用下划线字符。
例如:
合法的接口命名:
public interface IserviceProvider
public interface IFormatable
非法的接口命名:
public interface ServiceProvider
public interface I_Service_Provider
(4) 枚举(enum)名称的命名规定:
1)枚举的名称是指用关键字enum 声明的变量的名称。
2)大小定规定:将标识符的首字母和后面连接的每个单词的首字母都大写。
3)每个枚举的名称后加“Flags”后缀。
4)用名词或名词短语命名枚举。
例如:
合法的枚举命名:
public enum SeekPersitionFlags
public enum StateFlags
非法的枚举命名:
public enum SeekPersition
public enum State
(5) 结构体(struct)名称的命名规定:
1)结构体的名称是指用关键字struct声明的变量的名称。
2)大小定规定:将标识符的首字母和后面连接的每个单词的首字母都大写。
3)每个结构体的名称前加大写“S”前缀。
4)用名词或名词短语命名结构体。
5)结构体名称不能使用下划线字符。
例如:
合法的结构体命名:
public struct SPoint
public interface SStudent
非法的结构体命名:
public struct Point
public struct S_Point
(6) 枚举成员名称的命名规定:
1)枚举成员的名称是指用关键字enum 声明的变量体内的成员的名称。
2)大小定规定:将标识符的首字母和后面连接的每个单词的首字母都大写。
3)用名词或名词短语命名枚举值。
例如:
public enum WeekFlags
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
public enum SeekPersitionFlags
{
NoFlush,
SeekToKeyFrame,
IncrementalPositioning,
RelativePositioning,
AbsolutePositioning
};
(7) 事件名称命名规范
1)对事件处理程序名称使用 EventHandler 后缀。
2)指定两个名为 sender 和 e 的参数。sender 参数表示引发事件的对象。sender 参数始终是object 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类。
3)用 EventArgs 后缀命名事件参数类。
4)使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的 Close 事件应当具有 Closing 事件和 Closed 事件。不要使用BeforeXxx/AfterXxx 命名模式。
例如:
public delegate void MouseEventHandler(object sender, MouseEventArgs e);
以下示例阐释正确命名的事件参数类。
public class MouseEventArgs : EventArgs
{
int x;
int y;
public MouseEventArgs(int x, int y)
{
this.x = x;
this.y = y;
}
public int X
{
get
{
return x;
}
}
public int Y
{
get
{
return y;
}
}
}
(8) 常量(const)命名规范
1)常量是指类型声明之前有const修饰的量。
2)常量中所有单词都使用大写,各个单词之前用“_”隔开。
例如:
public const string PAGE_TITLE = "Welcome";
(9) 常用控件类型对象命名规范
Form窗体类型:加frm前缀
Button按钮类型:加btn前缀
TextBox文本框类型:加txt前缀
Label控件类型:加lab前缀
Menu菜单类型:加mnu前缀
Dialog对话框类型:加dlg后缀
(10) 其它常用类型对象命名规范
ArrayList类型 :加lst前缀
Image类型:加img前缀
Bitmap类型:加bmp前缀