C#命名规范(转)

好的命名规则能极大地增加可读性和可维护性。同时,对于一个有上百个人共同完成的大项目来说,统一命名约定也是一项必不可少的内容。本章对程序中的所有标识符(包括命名空间、变量名、常量名、控件名、参数名、属性名、方法名、类名、接口等)的命名做出约定。

【规则1】标识符要采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。

说明:标识符应当直观且可以拼读,可望文知义,避免使人产生误解。程序中的英文单词一般不要太复杂,用词应当准确。

【规则2】标识符只能由26个英文字母,10个数字,及下划线的一个子集来组成,并严格禁止使用连续的下划线,下划线也不能出现在标识符头或结尾(预编译开关除外)。

说明:这样做的目的是为了使程序易读。因为 variable_name 和 variable__name 很难区分,下划线符号‘_’若出现在标识符头或结尾,容易与不带下划线‘_’的标识符混淆。

【规则3】标识符的命名应当符合“min-length && max-information”原则。

说明:较短的单词可通过去掉“元音”形成缩写,较长的单词可取单词的头几个字母形成缩写,一些单词有大家公认的缩写,常用单词的缩写必须统一。协议中的单词的缩写与协议保持一致。对于某个系统使用的专用缩写应该在某处做统一说明。
正例:如下单词的缩写能够被大家认可:
temp 可缩写为  tmp 
flag 可缩写为  flg 
statistic 可缩写为  stat ;
increment 可缩写为  inc 
message   可缩写为  msg 

规定的常用缩写如下:


常用词

缩写

Argument

Arg

Buffer

Buf

Clear

Clr

Clock

Clk

Compare

Cmp

Configuration

Cfg

Context

Ctx

Delay

Dly

Device

Dev

Disable

Dis

Display

Disp

Enable

En

Error

Err

Function

Fnct

Hexadecimal

Hex

High Priority Task

HPT

I/O System

IOS

Initialize

Init

Mailbox

Mbox

Manager

Mgr

Maximum

Max

Message

Msg

Minimum

Min

Multiplex

Mux

Operating System

OS

Overflow

Ovf

Parameter

Param

Pointer

Ptr

Previous

Prev

Priority

Prio

Read

Rd

Ready

Rdy

Register

Reg

Schedule

Sched

Semaphore

Sem

Stack

Stk

Synchronize

Sync

Timer

Tmr

Trigger

Trig

Write

Wr


【规则4】采用应用领域相关的术语来命名。

说明:软件开发人员应注意软件用户的一些约定术语,不应当随意的创造术语,这会降低软件的易用性。

【规则5】程序中不要出现仅靠大小写区分的相似的标识符。

【规则6】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

说明:下面是一些在软件中常用的反义词组。
add/remove ; begin/end ;   create/destroy ;      insert/delete ;
first/last ; get/release ; increment/decrement ; put/get ;
add/delete ; lock/unlock ; open/close ;          min/max ;
old/new ;    start/stop ;  next/previous ;       source/target ;
show/hide ;  send/receive ;source/destination ;  cut/paste ;
up/down

【规则7】常量名都要使用大写字母, 用下划线 ‘_’ 分割单词。

正例如 DISP_BUF_SIZE、MIN_VALUE、MAX_VALUE 等等。

【规则8】一般变量名不得取单个字符(如i、j、k等)作为变量名,局部循环变量除外。

说明:变量,尤其是局部变量,如果用单个字符表示,很容易出错(如l误写成1),而编译时又检查不出,则有可能增加排错时间。过长的变量名会增加工作量,会使程序的逻辑流程变得模糊,给修改带来困难,所以应当选择精炼、意义明确的名字,才能简化程序语句,改善对程序功能的理解。

【规则9】使用一致的前缀来区分变量的作用域。

说明:变量活动范围前缀规范如下:
m_     :  类的成员变量(属性所对应的变量)
空      :  局部变量不加范围前缀

【规则10】使用一致的小写类型指示符作为前缀来区分变量的类型。

说明:常用变量类型前缀列表如下:
     : int
     : float
     : double
dcm    : decimall
ch     : char
     : long
bt     : byte
sbt    : sbyte
     : bool
sht    : short
usht   : ushort
ul     : ulong
ar     : array
str    : string
st     : struct

以上前缀可以进一步组合,在进行组合时,数组类型的前缀指示符必须放在变量类型前缀的首位。

【规则11】完整的变量名应由前缀+变量名主体组成,变量名的主体应当使用“名词”或者“形容词+名词”,且首字母必须大写。

说明:各种前缀字符可能组合使用,在这种情况下,各前缀顺序为:变量作用域前缀、变量类型前缀。

【规则12】控件命名应采用完整的英文描述符命名,名字的前缀是控件类型名缩写。

说明:


控件

缩写

Label

lbl

TextBox

txt

CheckBox

chk

Button

btn

ListBox

lst

DropDownList

ddlst

 等等

 


【规则13】参数名应由前缀+变量名主体组成,变量名的主体应当使用“名词”或者“形容词+名词”,且首字母必须大写。

说明:前缀为变量类型前缀。

【规则14】属性名用私有成员名称命名,但不带前缀,且首字母大写。

正例:
public class Hello
{
private string m_strName;
public string Name
{
get
{
return m_strName;
}
}
}

【规则15】方法名用大写字母开头的单词组合而成,且应当使用“动词”或者“动词+名词”(动宾词组)。

说明:方法名力求清晰、明了,通过方法名就能够判断方法的主要功能。方法名中不同意义字段之间不要用下划线连接,而要把每个字段的首字母大写以示区分。函数命名采用大小写字母结合的形式,但专有名词不受限制。

【规则16】To型方法:表示类型转换的方法一般用to开头。

说明:这些方法主要用来进行类型转换。
正例   ToString()

【规则17】遵循统一的规范来书写命名空间的声明,标识符用点号分隔开,且必须以ZTE开头。

说明:以ZTE开头,随后部分是系统、模块等。

【规则18】类名采用大小写结合的方法,构成类名的每个单词的首字母的首字母也必须大写。在构成类名的单词之间不用下划线。

说明:1.    名字应该能够标识事物的特性。
2.    名字尽量不使用缩写,除非它是众所周知的。
3.    名字可以有两个或三个单词组成,但通常不应多于三个。

  1. 在名字中,所有单词第一个字母大写。

【规则19】接口命名在名字前加上“I”前缀,其它和类命名规范相同。


〖建议1〗尽量避免名字中出现数字编号,如Value1、Value2等,除非逻辑上的确需要编号。


〖建议2〗标识符前最好不加项目、产品、部门的标识。

说明:这样做的目的是为了代码的可重用性。

posted @ 2010-04-20 13:13  thunderhao  阅读(466)  评论(0编辑  收藏  举报