C#代码规范整理
命名规范制定意义
1. 方便代码的交流和维护,便于日后自己的再次阅读。
2. 不影响编码的效率,不与大众习惯冲突。
3. 使代码更美观、阅读更方便。
4. 使代码的逻辑更清晰、更易于理解。
名词解释
Pascal:帕斯卡命名,每个单词第一个字母大写
Camel :驼峰命名,第一个单词字母小写,其余单词第一个大写
总结表:
|
标识符 |
大小写 |
样例 |
说明 |
|
命名空间 |
Pascal |
namespace System.Security { } |
用有意义的名字命名 namespace,如:产品名、公司名 |
|
类 |
Pascal |
public class StreamReader { } |
使用名词、名词短语命名 |
|
接口 |
Pascal |
public interface IEnumerable { } |
以 I 开始,后面加上名词、名词短语、形容词命名。 |
|
字段 ( 私有、保护 ) |
Camel |
private string userName; |
第一个单词小写,后面连接的单词首字母大写 |
|
字段 ( 公共、静态 ) |
Pascal |
public static readonly string UserId ; |
|
|
属性 |
Pascal |
private int length; public int Length { get; } |
字段private且小写,然后属性public大写 |
|
枚举 |
Pascal |
enum FileMode { Append, } |
|
|
事件 |
Pascal |
public event EventHandler Exited ; |
|
|
方法 |
Pascal |
public string ToString (); |
一般将其命名为动宾短语, “动词+对象 ”. |
|
参数 |
Camel |
public static int ToInt32(string userId ); |
基础数据类型命名
|
数据类型 |
标准命名举例 |
|
array |
arrShoppingList |
|
bool |
isPostBack |
|
string |
strFirstName |
|
int |
intId |
|
DateTime |
dtmStartDate |
|
object |
objDog |
上面是常用的数据类型
注意事项:
|
序号 |
说明 |
示例 |
|
1 |
除约定俗成的,别用缩写。用 name, address, salary 等代替 nam, addr, sal |
|
|
2 |
除用于循环,别使用单个字母的变量象 i, n, x 等. 而要使用 index, temp 等 |
for ( int index = 0; index < count; index++ ){ ...} |
|
3 |
自定义的异常以 Exception结尾 |
public class AppException : Exception |
|
4 |
代码的缩进 .要用 Tab,而不要用 space. |
|
|
5 |
所有的类成员变量应该被声明在类的顶部,并用一个空行把它们和方法以及属性的声明区分开 |
|
|
6 |
建议局部变量在最接近使用它时再声明 . |
|
|
7 |
文件名要能反应类的内容,最好是和类同名,一个文件中一个类或一组关连类 |
|
|
8 |
大括号 "{"要新起一行 |
|
|
9 |
单独方法要加注释 |
/// <summary> /// 根据id获得姓名 /// </summary> /// <param name="id">检索的id</param> /// <returns></returns> public string GetName(int id) { return "xiaomi"; } |
|
10 |
不要对字段名或静态字段名应用前缀。 具体说来, 不要对字段名称应用前缀来区分静态和非静态字段。 |
例如,应用 g_ 或 s_ 前缀是不正确的。 |
|
11 |
避免容易被主观解释的难懂的名称 |
方法名 AnalyzeThis() ,或者属性名 xxK8。这样的名称会导致多义性。 |
|
12 |
在类属性的名称中包含类名是多余的 |
如 Book.BookTitle 。而是应该使用 Book.Title |
|
13 |
只要合适,在变量名的末尾或开头加计算限定符 |
( Avg、Sum、Min、Max、Index ) |
|
14 |
在变量名中使用互补对 |
如 min/max 、begin/end 和 open/close |
|
15 |
布尔变量名应该包含 Is ,这意味着 Yes/No 或 True/False 值 |
fileIsFound |
|
16 |
在命名状态变量时,避免使用诸如 Flag 的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值 |
不是使 用 documentFlag ,而是使用更具描述性的名称,如 documentFormatType 。 (此项只供参考) |
|
17 |
用于事件处理的委托添加 “EventHandler ”后缀 |
public delegate void MouseEventHandler(object sender, MouseEventArgs e); |
|
18 |
用于事件处理之外的那些委托添加 “Callback ”后缀 |
|
|
19 |
不要给委托添加 “Delegate ”后缀 |
|
C#代码规范整理的更多相关文章
- python代码规范整理
规范参考源: 1.pep8(python代码样式规范):中文文档 https://blog.csdn.net/ratsniper/article/details/78954852 2.pep ...
- .NET代码编写规范 整理
.NET代码编写规范 整理 .NET代码编写规范 - [ASP.NET] 2009-02-26 | Tag: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://lensp ...
- JavaScript代码规范和性能整理
性能 Js在性能方面有多要注意的地方: 避免全局查找 Js性能优化最重要的就是注意全局查找,因为作用域的查找是先找局部作用域在没有找到之后在去上一级作用域查找直到全局作用域,所以全局作用域查找的性能消 ...
- Java编程规范整理
分享一份网友整理的编程过程中的命名规范 包命名 包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反. 由一组以"."连接的标识符构成,通常第一个标识符为 ...
- 【转】iOS代码规范
原文地址: http://www.cocoachina.com/ios/20150908/13335.html 简介: 本 文整理自Apple文档<Coding Guidelines for C ...
- Sonar 常用代码规则整理(二)
摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ============ ...
- Sonar 常用代码规则整理(一)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...
- 我自己总结的C#开发命名规范整理了一份
我自己总结的C#开发命名规范整理了一份 标签: 开发规范文档标准语言 2014-06-27 22:58 3165人阅读 评论(1) 收藏 举报 分类: C#(39) 版权声明:本文为博主原创文章, ...
- 单元测试系列之十:Sonar 常用代码规则整理(二)
摘要:帮助公司部署了一套sonar平台,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ======== ...
随机推荐
- Python成长之路第一篇(2)__初识列表和元组
可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...
- mysql八:ORM框架SQLAlchemy
阅读目录 一 介绍 二 创建表 三 增删改查 四 其他查询相关 五 正查.反查 一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进 ...
- Use trained sklearn model with pyspark
Use trained sklearn model with pyspark from pyspark import SparkContext import numpy as np from sk ...
- Apache禁止或允许固定IP访问特定目录、文件、URL
1. 禁止访问某些文件/目录 增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库: <Files ~ "\.inc$"> Order a ...
- [Selenium] 处理表格(python + java)
python : https://www.cnblogs.com/yan-xiang/p/6819168.html 操作内容:获取table总行数.总列数.获取某单元格的text值,删除一行[如果每行 ...
- ACM学习历程—Hihocoder编程之美测试赛B题 大神与三位小伙伴(组合数学 )
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给你一个m x n (1 <= m, n <= 100)的矩阵A (0<=aij<=10000),要 ...
- ACM学习历程——HDU4472 Count(数学递推) (12年长春区域赛)
Description Prof. Tigris is the head of an archaeological team who is currently in charge of an exca ...
- 实际用户ID和有效用户ID (三) *****
我们知道权限有r,w,x.其实除了这三个,还有特殊权限.比如: [root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 229 ...
- POJ1986(LCA应用:求两结点之间距离)
Distance Queries Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 11304 Accepted: 3985 ...
- Linux 运维面试问题总结
Linux 运维面试问题总结 1.详细描述mysql主从复制的方式?(类似跟DRBD高可用的协议类型) 答: (1)同步复制(C协议:sync):只有在本地和远程磁盘都确定写入已完成时,主节点才会认为 ...