C# 软件编码规范
一、代码注释
并不是所有的代码均需要注释。
1、类头部注释
/// <summary>
/// 描述类的用途
/// 作者: 张三
/// 日期: 2015/12/1
/// </summary>
public class MyClass{...}
2、方法头部注释
/// <summary>
/// 描述方法的用途
/// </summary>
/// <param name=”param1”>参数的用途</param>...
/// <returns>返回的结果</returns>
public void MyMethod(){……}
3、代码行注释
public void FooMethod(){
var t = ; //局部变量注释,可写在行末
//块注释, 写在代码行的上一行,单独一行或多行
if(t > ){
Console.PrintLine("xxx");
}
}
4、类属性注释
/// <summary>
/// 描述属性含义与用途
/// </summary>
private string helloStr;
二、命名规则
1、基本约定
- 要使用可以准确说明变量/字段/类的完整的英文描述符,如vehicleNumber。
- 要尽量采用项目所涉及领域的术语。
- 要采用大小写混合,提高名字的可读性。
- 驼峰表示法:camelCasing
- Pascal表示法:PasalCasing
- 避免使用缩写,如果一定要使用,就谨慎使用。
- 对常见缩略词,两个字母的缩写要采用统一大小写的方式(示例:ioStream, getIOStream);多字母缩写采用首字母大写,其他字母小写的方式(示例:getHtmlTag)
- 避免使用长名字(最好不超过 15 个字母)。
- 避免使用相似或者仅在大小写上有区别的名字。
| 标识符 | 大小写 | 示例 | 说明 |
| 命名空间 | Pascal | namespace Com.Techstar.ProductionCenter |
程序集、DLL和命名空间(name space)命名,一般情况下建议命名空间和目录结构相同。命名方式: 命名空间(name space): 公司名+产品名+模块名,如:Srx.WeChatOA.Login, 表示三人行公司的微信OA项目的登录模块 |
| 类 | Pascal | public class DevsList |
public class List<T>
|
| 接口 | Pascal | public interface ITableModel | |
| 方法 | Pascal | public void UpdateData() |
|
| 属性 | Pascal | Public int Length{…} | |
| 事件 | Pascal | public event EventHandler Changed; | |
| 枚举值 | Pascal | FileMode{Append} | |
| 参数 | Camel | public void UpdateData(string fieldName) | |
| 私有字段 | Camel | private string fieldName; | 按照使用范围来分,我们代码中的变量的基本上有以下几种类型,类的公有变量;类的私有变量(受保护同公有);方法的参数变量;方法内部使 用的局部变量。
Button btnSubmit;//提交按钮 |
| 非私有字段 | Pascal | public string FieldName; | |
| 局部变量 | Camel | string fieldName; |
三、其他规范
1. 变量声明, 请不要把多个变量声明写在一行中,即一行只声明一个变量。
例如:
String strTest1, strTest2;
应写成:
String strTest1;
String strTest2;
2. 避免方法中有超过5个参数的情况,一般以2,3个为宜,最多8个。如果超过了,则应使用struct来传递多个参数。
避免写超大类, 类的代码行尽量控制在千行以内, 300到500行为最佳. 绝对不允许出现5000行以上的超大类.
四、错误处理
1. 不要“捕捉了异常却什么也不做“。如果隐藏了一个异常,你将永远不知道异常到底发生了没有。
2. 发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。
3. 只捕捉特定的异常,而不是一般的异常。
五、建议
1. 一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
2. 使用C#的特有类型,而不是System命名空间中定义的别名类型。
3. 别在程序中使用固定数值,用常量代替。
4. 避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。如果在几个方法间共享一个成员变量,那就很难知道是哪个方法
在什么时候修改了它的值。
5. 不在代码中使用具体的路径和驱动器名。 使用相对路径,并使路径可编程。
6. 应用程序启动时作些“自检”并确保所需文件和附件在指定的位置。必要时检查数据库连接。出现任何问题给用户一个友好的提示。
7. 如果需要的配置文件找不到,应用程序需能自己创建使用默认值的一份。
8. 如果在配置文件中发现错误值,应用程序要抛出错误,给出提示消息告诉用户正确值。
9. DataColumn取其列时要用字段名,不要用索引号。例:
正确:DataColumn[“Name”]
不好:DataColumn[0]
10. 在一个类中,字段定义全部统一放在class的头部、所有方法或属性的前面。
11. 在一个类中,所有的属性全部定义在一个属性块中:
C# 软件编码规范的更多相关文章
- Java软件编码规范要求
1.一个类对应一个文件,文件名与类名保持一致 虽然一个“.java”源文件可以有多个类(不是内部类),但是不提倡那么写.
- IT兄弟连 Java语法教程 注释与编码规范
在程序代码中适当地添加注释可以提高程序的可读性和可维护性.好的编码规范可以使程序更易阅读和理解.下面将介绍Java中的集中代码注释以及应该注意的编码规范. 代码注释 通过在程序代码中添加注释可提高程序 ...
- Tutorial 3_软件工作量估计和编码规范
软件过程与管理实验 实验3:编码规范 本次实验内容是个人软件过程部分,通过本次实验,学生将掌握以下内容: 1.建立自己的编码规范和代码审查表. 2.会用COCOMO II模型对软件工作量进行估计. [ ...
- PHP 高级编程(1/5) - 编码规范及文档编写
PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...
- C#编码规范 转 http://www.cnblogs.com/wulinfeng/archive/2012/08/31/2664720.html
C#编码规范 1 规范目的 ……………………………………………………… 3 2 适用范围 ……………………………………………………… 3 3 代码注释 ………………………………………………… ...
- HTML编码规范
HTML编码规范 1 前言 HTML作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用.本文档的目标是使HTML代码风格保持一致,容易被理解和被维护. 2 代码风格 2.1 缩进与换行 [强制 ...
- c#编码规范
1 规范目的 --------------------- 3 2 适用范围 --------------------- 3 3 代码注释 --------------------- 3 3.1 ...
- [转]JavaScript程序编码规范
原文:http://javascript.crockford.com/code.html 作者:Douglas Crockford 译文:http://www.yeeyan.com/articles/ ...
- html和css的编码规范
HTML和CSS编码规范内容 一.HTML规范 二.CSS规范 三.注意事项: 四.常用的命名规则 五.CSS样式表文件命名 六.文件命名规则 一.HTML规范: 1.代码规范 页面的第一行添加标准模 ...
随机推荐
- golang sync.Cond
package main import ( "fmt" "sync" "time" ) func main() { wait := sync ...
- [USACO08JAN]电话线Telephone Lines(分层图)/洛谷P1948
这道题其实是分层图,但和裸的分层图不太一样.因为它只要求路径总权值为路径上最大一条路径的权值,但仔细考虑,这同时也满足一个贪心的性质,那就是当你每次用路径总权值小的方案来更新,那么可以保证新的路径权值 ...
- 【习题 7-3 UVA - 211】The Domino Effect
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每次搜素要往下还是要往右摆. 然后维护一下让每个下标只出现一次就可以了. =>作为剪枝条件 [代码] /* 1.Shoud i ...
- 支付宝支付Java后台总结
这个支付的流程是前端H5(APP等)需要支付时调用后台的接口拿到我们加密的签名去调起支付宝的支付界面(支付宝APP)进行支付操作,并且前端在支付成功后,支付宝后台会回调一个我们在签名时写入的一个接口地 ...
- Mining Station on the Sea (hdu 2448 SPFA+KM)
Mining Station on the Sea Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 关于laravel框架分页报错的问题
因为laravel框架有自己的分页封装,所以与其他框架相比laravel框架的分页的实现要方便的多 只要分别在php脚本与视图中使用 $data=DB::table('index_pic')-> ...
- xpath使用方法详解id 、starts-with、contains、text()和last() 的用法
1.XPATH使用方法 使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点): a.通过绝对路径定位元素(不推荐!) WebElement ele = driver.findEle ...
- app 自动化测试 Appium+Java可以运行的代码
地址:http://www.cnblogs.com/sunny-sl/p/6520465.html
- Mongodb总结5-通过装饰模式,用Mongodb解决Hbase的不稳定问题
最近继续学习Mongodb的根本原因,是为了解决今天的问题.项目中用到了Hbase,生产环境服务器用了3台,但是不够稳定,每2天左右,就连不上了.重启就好了,当然,这是一个历史遗留问题.我在想,是不是 ...
- 13. 关于IDEA工具在springboot整合mybatis中出现的Invalid bound statement (not found)问题
在一切准备就绪之后,测试test,却出现了org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ...