C#编码规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#编码规范
C#编码规范
⽬录
1简介 (3)
2命名规范 (3)
3⽂件组织 (4)
4注释 (5)
5异常处理 (5)
6SQL及数据库相关 (6)
7其它 (7)
8参考 (8)
1简介
本规范约定了⼀些 C# 开发过程中应遵循的的规范,以便书写的代码易于理解、维护和增强,提⾼团队开发效率。
2命名规范
2.1使⽤Pascal Casing风格命名(第⼀个字母⼤写,其它单词⾸字母⼤写)
●命名空间
●类名、接⼝名、枚举定义
●⽅法名、属性名、事件名
2.2使⽤Camel Casing风格命名(第⼀个字母⼩写,其它单词⾸字母⼤写)
●私有字段
●⽅法的参数
●局部变量
2.3类级私有字段,应加上_前缀,避免和⽅法局部变量混淆,如:
private string _key;
2.4避免使⽤⾸字母缩写,如GetDataFromXml不得简写为GDFX
2.5避免过长的命名,命名建议不超过15个字符
2.6避免使⽤单字符或⽆意义的命名,⽣命周期短的变量除外(如i)
2.7控件命名建议使⽤控件名称缩写,如:txtName表⽰TextBox、cmbServers
表⽰ComboBox、chkEnable表⽰CheckBox等
3⽂件组织
3.1每个命名空间对应⼀个⽬录,例如:
CompanyName.Project.Types命名空间,应该对应⽬录结构:
X:\CompanyName\Project\Types
3.2每个类单独创建⼀个⽂件,并⽤类名来命名⽂件,避免⼀个⽂件⾥存在多
个类,私有类可以不单独创建⽂件
3.3缩进与换⾏
3.3.1使⽤4个空格代替Tab缩进
注:按下tab键时,VS默认是4个空格,⽽不是\t,确认你未修改
配置路径:VS的⼯具菜单=>选项=>⽂本编辑器=>C#=>制表符
3.3.2按代码结构层次进⾏多级缩进
3.3.3每⾏代码不要超过120个字符(含缩进和空⽩),超过时应在逗号、
运算符、⼩数点操作符后换⾏,如:
可以⽤这个⽂件添加屏幕竖线:\\192.168.19.63\共享⽬录
\Tools\Deverlops\DotNet\VisualStudio2010\ColumnGuide.vsix_为VS2010添加竖线.rar 3.3.4建议每个⽅法总⾏数不得超过30⾏(不包含空⾏)
改为封装成⽅法(⽅法名必须能明确指定⽅法⽤途)
3.3.5语句换⾏,在每个{ 或 }前后都要换⾏
3.3.6对if或for之类的代码,后⾯必须加 { },即使只有⼀⾏代码,如:
避免
3.3.7适当增加空⾏,在⽅法之间、不同功能逻辑之间、变量定义和后⾯
的代码之间都⾄少有⼀空⾏
⽅法内的⼀整个功能逻辑,建议使⽤#region #endregion包起来
4注释
4.1每个类或⽅法都应该加上注释,推荐使⽤标准格式:///
4.2每段逻辑较复杂或意图不明显的代码,都应加上注释,简述代码作⽤
4.3避免类似如下的⽆意义的注释,或对浅显易懂的代码进⾏注释:
int i; // ⽤于循环计数的变量
int a = b > c ? b : c; // 求b和c之间的最⼤值
4.4注释应该及时添加,在完成代码的同时,也完成注释
4.5修改代码时,必须更新对应的注释,尤其是⽅法参数修改
4.6代码提交svn,必须书写修改说明,不得提交空⽩说明
5异常处理
5.1所有线程或异步调⽤的代码,必须⽤try处理所有异常,避免未处理异常
导致进程退出(参考faq⽂档具体代码)
5.2Web.config关闭详细错误显⽰(仅⽣产环境):
5.3在Global的Application_Error⽅法中记录并清理异常,如:
6SQL及数据库相关
6.1禁⽌拼接SQL条件,强制使⽤SqlParameter参数化查询,如果业务需要拼接,请在代码处写明拼接理由
如果条件不固定,可以参考写法:
6.2SqlParameter使⽤Varchar等字符类型时,必须指定参数长度,否则⽆法
重⽤执⾏计划,如果参数是Varchar(Max),参数长度请指定为-1
建议采⽤底层封装的⽅法:
net91com.Core.Data.SqlParamHelper.MakeInParam
6.3编写SQL时,表名后建议增加WITH(NOLOCK),这样即时表被锁定时也能查询数据
注:对视图⽆效,所以视图后不要增加
6.4对于特别长的SQL,请改⽤存储过程代替,以便维护和调优
注:SQL越复杂,数据库越难以得到最优的执⾏计划,可能会出现:同⼀
个SQL有时快有时慢的问题
7其它
7.1var不推荐使⽤,不便于知道当前变量的类型,基于接⼝编程,可以:
接⼝名 obj = Factory.CreateXxx();
从当前⾏代码可以看出变量类型时,可以使⽤var,如:
var sb = new StringBuilder();
7.2避免过长的语句,尽量分隔为多条语句,例如:
避免:
建议:
7.3尽量使⽤括号,⽽不要依赖运算符的优先级,例如:
避免:
建议:
尤其是使⽤if判断⾥同时存在 && 和 || 的情况
7.4++ 或 -- 这样的运算符,必须独⽴⼀⾏,不允许使⽤:
int a = b++;这样的写法
7.5特别长的字符串,建议使⽤@开头的字符串,例如:
建议:
避免:
7.6所有类似数据库连接、Stream流等实例使⽤的地⽅都要⽤using括起来,
避免因未释放,造成资源被耗尽。
7.7对于所有公共常量能定义成枚举的⼀定要定义成枚举,如果是字符串,可
将其定义成类的公有属性或字段,保证项⽬中所有引⽤的⼀致性。
7.8可以不⽤全局变量的地⽅尽量不要定义全局变量。
使⽤全局变量会造成⽅
法间的耦合度增⾼,逻辑控制变复杂,可以通过⽅法传参的⽅式来代替。
7.9对于通⽤的基本类型、枚举和⽅法,应该引⽤通⽤DLL来直接调⽤,保证
所有项⽬的基础逻辑⼀致性,避免引发不必要的错误和维护成本。
通⽤DLL
建议不要引⽤其它第三⽅DLL,保证其基础性作⽤。
7.10对于页⾯,建议使⽤基类,由基类来处理公共逻辑,⽐如登录验证、权限
判断等,避免每个页⾯重复相同的逻辑,也有利于后期追加公共逻辑。
7.11编写页⾯时,建议关闭ViewState视图状态,不使⽤服务端控件,后台开
发除外。
8参考
8.1\\192.168.19.13\共享⽬录\Study\DotNet\C#语⾔规范4.0版本_微软官
⽅原版.pdf
8.2\\192.168.19.13\共享⽬录\Study\DotNet\NET设计规范:约定、惯⽤法
与模式.pdf
8.3避免这些习惯:如何写出⽆法维护的代码
/doc/8990accda45177232e60a265.html /articles/4758.html。