公司内部要统一下编程的命名规范,针对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
前缀