您的位置:首页 > 编程语言 > C#

C#语言规范(其二)

2011-11-05 20:06 127 查看
概要:

C#中使用帕斯卡命名法(Pascal)和骆驼命名法(Camel)。

a、 骆驼命名法命名的名称像骆驼背一样跌宕起伏,该命名法要求名称的首单词要小写,随后的单词首字符要大写。如:string userName

b、 帕斯卡命名法与骆驼命名法类似,只不过要求首字母大写,而骆驼命名法是首字母小写。如:public void PrintEmployeePaychecks() {…}

命名规范

1.类

【规则1-1】使用Pascal规则命名类名。如:class BmpFileStream

【规则1-2】使用能够反映类功能的名词或名词短语命名类。

如:public class FileStream

【规则1-3】不要使用“_”、“C”、“I”等特定含义前缀。

【规则1-4】自定义异常类应以Exception尾。

如:public class EmailException:Exception { // 类体 }

【规则1-5】文件名要能反映类的内容,最好是和类同名。

2.类字段

【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。

如:class Student

{

string stuName;

string stuNo;

string password;

}

【规则2-2】类字段变量名前可加“_”前缀。

如:class Student

{

string _stuName;

string _stuNo;

}

【规则2-3】坚决禁止在普通变量前加“m_”前缀。

如:class Student

{

string m_stuName;

string m_stuNo;

}

3.方法

【规则3-1】方法名采用Pascal规则,第一个字符要大写。

如:public void DoubleValue() {…}

public void Show() {…}

【规则3-2】方法名应使用动词或动词短语。

如:void RemoveAll() {…}

【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。

如:class Test

{

Public void Invoke() {…}

Public void Insert() {…}

Private void RemoveAll() {…}

Private void GetCharArray() {…}

}

4.属性

【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。

如:public class Book

{

Public Color BookName

{…}

}

【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。

如:public class Book

{

Private string bookName;

Public Color BookName

{

Get{ return bookName;}

}

}

5.参数

【规则5-1】参数采用camel规则命名,首字符小写。

如:string Format(string format,object [] args) {…}

【规则5-2】使用描述性参数名称,参数名称应当具有足够的说明性。

【规则5-3】不要给参数加匈牙利语类型表示法的前缀。

如下面是不合理的:void Insert(string sName,string strAddress)

应该为:void Insert(string name,string address)

6.常量

【规则6-1】只读常量使用Pascal规则,首字符大写。

如:class Calendar

{

Public readonly Color RedColor;

Public const Tuesday;

}

【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。

如:enum CarColor {Red,Blue,Yellow}

【规则6-3】枚举值从小到大顺序定义。

【规则6-4】静态字段或属性采用Pascal规则,首字符大写。

7.接口

【规则7-1】接口定义使用Pascal规则,且必须以大写“I”开头。

如:public interface IdataPort

Public interface IFormatable

【规则7-2】接口名称要有意义,中间不要有下划线“_”等字符。

如:interface I_Data_Port是不合适的。

【规则7-3】如果类实现了接口,名称尽量和接口相同,只是省掉“I”字符。

如:public interface IComponent{//接口定义}

Public class Component : IComponent{//类实现}

8.事件

【规则8-1】委托名称采用Pascal规则,第一个字符大写。

如:public delegate void CountHandler(int x,int y)

【规则8-2】定义事件的委托要使用EventHandler后缀,且包括sender和e两个参

数。

如:delegate void MouseEventHandler(object sender,MouseEventArgs e)。

【规则8-3】事件用到的参数类,名称要带EventArgs后缀。。

如:public class MouseEventArgs{//参数类内容}

9.命名空间

【规则9-1】命名空间名称采用Pascal规则,首字符大写。

如:namespace HairCompany { //命名空间内容 }

【规则9-2】命名空间名称尽量反映其内容所提供的整体功能。

如:Microsoft.Media, Microsoft.Media.Design

注释规范

1.文件头部注释

【规则1-1】文件都包含文件头,要说明文件名、作者、创建时间、变更记录等。

【规则1-2】推荐采用.NET形式书写头部注释。

如:

///<summary>

///文件名:CarPrint.cs

///作者:小强

///创建日期:2007-05-23

///描述:完成打印功能

///修改日期:2007-11-23

///Email:perrymail@126.com

///</summary>

2.类及其成员注释

【规则2-1】对方法和类使用“///”注释。

【规则2-2】代码行文注释采用“//”和“/**/”进行,应该尽量说明问题。

【规则2-3】添加的注释必须能够说明此语句块的作用和实现手段。

【规则2-4】所有的注释都应该用英文或者中文,同一段注释不要混用两种语言。

【规则2-5】代码变更需要将旧代码注释,并且说明变更原因、变更作者和变更时间。

行文规范

1.缩写规范

【规则1-1】标识符应当直观可望文知意,不提倡使用任何缩写。

【规则1-2】字符串变量推荐以“str”或“s”开头,采用string.Empty来初始化。

【规则1-3】普通对象可以以“obj”开头。

【规则1-4】缩写可自行定义,一般取单词的前/后字符组成,以含义直观为准则。

【规则1-5】一般情况下不要让缩写破坏标识符的含义。

如:public Student GetStu()

应该使用:public Student GetStudent()

2.排版

【规则2-1】每行语句至少占一行,如果语句过长(超过一屏),则该语句断为两

行显示

【规则2-2】 把相似的内容放在一起,比如字段、属性、方法、事件等,使用“#region”命令分组。

【规则2-3】多个程序元素进行对等操作时,操作符之前、之后或者前后要加空格。

【规则2-4】每个方法的源程序行数原则上应该少于200行。

【规则2-5】语句嵌套层次不得超过3层。

【规则2-6】避免相同的代码段在多个地方出现。

3.语句结构

【规则3-1】如果使用了异常结构,一定要处理异常,一般要写日志文件。

【规则3-2】分支语句不应该使用复杂长条件。

如:if(txtName == null || txtName == string.Empty)

{ // 处理代码 }

应该将长条件封装成方法:if( txtNameEnable() ) {…}

【规则3-3】switch语句,case后面必须接break(这一点C#已经强行限制)。

【规则3-4】禁止使用goto语句进行跳转。

【规则3-5】行文中严禁出现“魔数”,特定含义的常数必须定义成枚举或常量。

如:if( objCar.Type == 1 ) objCar.Run();

应为:if( objCar.Type == Cars.BMP ) objCar.Run();

【规则3-6】不同类型的操作符混合使用时,使用括号给出优先级。

【规则3-7】不允许使用复杂的操作符组合等。

【规则3-8】循环、判断语句的程序块部分用花括号括起来,即使只有一条语句。

【规则3-9】在switch语句中总是要有default子句,建议使用断言。

CarType type = GetType();

Switch(type)

{

Case CarType.GMC: return new GMCCar(); break;

Case CarType.BMW: return new BMWCar(); break;

Default: Debug.Assert(false); break;

}

【规则3-10】每个类和方法完成单一的功能,不设计多用途面面俱到的类和方法。

【规则3-11】严禁使用未经初始化的变量,变量通常使用构造方法来初始化。

4.代码缩进

【规则4-1】碰到大括号要换行。

【规则1-2】不允许使用Java中的括号换行规范。

If(a>b){

//Java 语言规范

}

5.大小写

【规则5-1】不要创建名称相同,但大小写区别的任何元素。

【规则5-2】应当大写仅有两个字符的缩写。如:string stuID

【规则5-3】不要把混淆的数据和字符放在一起。如:lo == 10

【规则5-4】使用英文命名标识符。

6.重名规范

【规则6-1】不允许变量名、类名、属性名、方法名、等与系统标识符重名。

7.SQL编码规范

【规则7-1】SQL语句全部大写。如:SELECT psnName FROM Person

【规则7-2】对较为复杂的SQL语句加上注释,说明其功能。

【规则7-3】连接符OR、IN、AND、以及=、<=、>=等前后加上一个空格。

【规则7-4】使用明确的列代替SELECT *。

8.软件架构

【规则8-1】数据库中每一张表对应一个实体类/数据传输对象(DTO)

【规则8-2】实体类名称使用表名,也可带有Dto后缀。

【规则8-3】三层架构应当合理使用,不应生搬硬套。

【规则8-4】三层架构元素推荐后缀:

数据传输对象 XxxxDto

DAO工厂 XxxDAOFactory

DAO接口 IXxxxDAO

服务接口 IXxxxService

DAO的数据库实现 XxxxDAOOracle/XxxxDAOInfomix

业务逻辑 XxxxManager

9.系统

【规则9-1】在国内不要随便使用设计模式等代码模式,因为并不流行。

【规则9-2】系统输入、资源操作(如内存分配、文件及目录操作)、网络操作(如通信、调用等)、任务之间的操作(如通信、调用等)时必须进行错误、超时或者异常处理。【规则9-3】模块编写应该有完善的测试方面的考虑。

注:转自http://tianyongjian2p.blog.163.com/blog/static/17505638200982711232735/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: