C#格式规范

前言

之前工作中整理的一篇编码规范。

代码注释

注释约定

只在需要的地方加注释,不要为显而易见的代码加注释
使用 /// 生成的xml标签格式的文档注释

方法注释

所有的方法都应该以描述这段代码的功能的一段简明注释开始(方法是干什么)。这种描述不应该包括执行过程细节(它是怎么做的)

/// <summary>
/// 把对象类型转化为指定类型
/// </summary>
/// <typeparam name="T">动态类型 </typeparam>
/// <param name="value">要转化的源对象 </param>
/// <returns> 转化后的指定类型的对象,转化失败引发异常。</returns>
public static T CastTo<T>(this object value)

代码行注释

如果某一功能需要多行代码,并有多个逻辑结构,应在此代码前添加注释,说明此块代码的处理思路及注意事项等
注释从新行增加,与代码开始处左对齐
注释双斜线与注释之间以空格分开,示例如下:

public void Dispose(){
    // 如果连接已打开,则关闭连接并释放资源
    if(this.connection.State == ConnectionState.Open ){
        this.connection.Close();
        this.connection.Dispose();
    }
}

变量注释

变量需添加注释,说明变量的用途
Class级变量使用 /// 生成的Xml标签格式的文档注释

/// <summary>
/// 文档名称
/// </summary>
public static string docName = "";

方法级的变量注释可以放在变量声明语句后,与上下行的注释左对齐,注释与代码间以 Tab 键分隔

public void CreateDoc() {
    string docType = "";                   //文档类型
    string author = "";                    //作者
    DateTime createDate = DateTime.Now;    //创建世界
}

命名规范

命名基本约定

PascalCasing:

包含一个或多个单词,每个单词首字母大写,其余小写
使用范围:命名空间、类、接口、方法、属性、事件、非私有字段、枚举值

namespace System.IO
public static class Console
public enum FileAccess

camelCasing:

包含一个或多个单词,第一个单词首字母小写,其余单词首字母大写
使用范围:方法参数、局部变量

public string GetName(int productId){
    string productName = null;
}

**_camelCasing:**

"_"+camelCasing的方式
使用范围:私有字段

private string _productName;

UPPER_CAPS:

包含多个单词,每个单词的所有字母大写,单词之间使用"_"连接
使用范围:const常量

public const string DEFAULT_NAME = "default";

示例:

namespace ConsoleApp {
    public delegate void SalesOutEventHandler();

    public class Product {
        public event SalesOutEventHandler OnSalesOut;

        public Product GetProductById(int productId) {
            return null;
        }

        private enum ProductType {
        }
    }
}

标识符命名约定

类和接口

类的名字使用名词
避免使用单词缩写,除非是广为人知的,比如: HTTP , IO
接口以 I 字母开头
同一项目不同命名空间中的类,命名避免重复

方法

第一个单词为动词
返回值为 bool 类型,则加 Is , Can , Try前缀

变量

尽量使用短而有意义的单词
单字符变量名一般用于生命周期非常短的变量,如 for , foreach 中递增变量可以被命名为 i
如果变量表示集合,则变量名使用复数,如 RowsCount
命名控件使用匈牙利命名法,前缀遵循同一个缩写表
在带单位的值变量后加“_camelCasing”格式的单位,如: public void CreateCache(int cacheSize_mb)

类型成员排列顺序

类型成员的排列顺序自上而下依次为:

字段: 私有字段、受保护字段
属性: 私有属性、受保护属性、公有属性
事件: 私有事件、受保护事件、公有事件
构造函数: 参数数量最少的构造函数,参数数量中等的构造函数,参数数量最多的构造函数
方法: 重载方法的排列顺序与构造函数相同,从参数数量最少往下至参数最多

其他规范

代码长度

每行代码不宜过长,应在屏幕宽度之内,约为80-120个字符左右。换行规则如下:

在逗号后换行
在操作符后换行
在高层换行而不是在低层换行
换行后与上一行语句对齐

推荐写法:

var n = a * b / (c - g + f) +
        4 * z;

不推荐写法:

var n = a * b / (c - g +
    f) + 4 * z;

方法行数

每个方法的有效代码行数(不包括注释和空行)应保持在50行以内

空白

空行是为了将逻辑相关的代码分块,以便提高阅读性
在以下情况使用两个空行:

类声明和接口声明之间
两个类声明之间
枚举与类声明之间

在以下情况使用一个空行:

方法与方法、属性与属性之间
方法中变量声明与语句之间
方法与方法之间
方法不同逻辑块之间
类中属性与方法、属性与字段、方法与字段之间
注释与它注释的语句之间不空行,与其他语句之间空一行

在以下情况使用空格:
在VS编辑器中可以使用快捷键格式化代码

参数列表的逗号后,void UpdateDate(int a, int b)
二元操作符,a += b - c;
强制类型转换后,c = (char) a;

代码缩进

代码缩进使用Tab键,不要使用空格,Tab键的宽度为4个字符,VS中设置如下:

【工具】-【选项】-【文本编辑器】-【C#】-【制表符】,选中【保留制表符】

代码半展开

把花括号放在前一条语句的末尾,VS中设置如下:

【工具】-【选项】-【文本编辑器】-【C#】-【格式设置】-【新行】,取消右侧所有勾选

附录

注释内容

项目 注释内容
类的目的,开发历史
接口 接口的目的,如何使用
字段/属性 字段描述
方法注释 方法作用,返回值,抛出的异常,调用的前提和后置条件
方法内部注释 控制结构,复杂的代码,处理顺序
参数 用来做什么,约束,前提条件
局部变量 用处,目的

XML文档注释

MSDN文档注释标签 https://msdn.microsoft.com/zh-cn/library/5ast78ax(v=vs.140).aspx

标记 说明
<c> 提供了一种将说明中的文本标记为代码的方法
<code> 提供了一种将多行指示为代码的方法
<example> 可以指定使用方法或其他库成员的示例。一般情况下,这将涉及到<code>标记的使用。
<exception> 对可从当前编译环境中获取的异常的引用。
<include> 引用描述源代码中类型和成员的另一文件中的注释。
<list> 用于定义表或定义列表中的标题行。
<para> 用于诸如<summary>、<remarks> 或 <returns> 等标记内,使您将结构添加到文本中。
<param> 应当用于方法声明的注释中,以描述方法的一个参数。
<paramref> 提供了一种指示词为参数的方法。
<permission> 将成员的访问记入文档。
<remarks> 用于添加有关某个类型的信息,从而补充由 <summary> 所指定的信息。
<returns> 应当用于方法声明的注释,以描述返回值。
<see> 从文本内指定链接。
<seealso> 对可以通过当前编译环境进行调用的成员或字段的引用。
<summary> 应当用于描述类型或类型成员。
<value> 描述属性。

VS常用快捷键

功能 VS2010 VS2013 说明
文档格式化 Ctrl+E, Ctrl+D Ctrl+K, Ctrl+D 格式化当前文档
选定内容格式化 Ctrl+E, Ctrl+F Ctrl+K, Ctrl+F 格式化选中内容
注释 Ctrl+E, Ctrl+C Ctrl+K, Ctrl+C 注释当前行
取消注释 Ctrl+E, Ctrl+U Ctrl+K, Ctrl+U 取消注释当前行
复制 Ctrl+C - 复制光标所在行,不需要选中
剪切 Ctrl+X - 剪切光标所在行,不需要选中
删除 Ctrl+L - 删除光标所在行,不需要选中
折叠 - Ctrl+M, Ctrl+O 折叠当前文档
展开折叠 - Ctrl+M, Ctrl+L 展开当前文档

参考

MSDN开发语言和工具 https://msdn.microsoft.com/zh-cn/library/aa187916.aspx
C#语言规范 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\2052\CSharp Language Specification.docx

原文地址:https://www.cnblogs.com/cjm123/p/8571264.html

时间: 2024-10-17 14:28:33

C#格式规范的相关文章

JAVA语言编程格式规范

目   录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口命名规范 3.4 方法命名规范 3.5 常量 3.6 变量和参数 3.7 组件/部件 3.8 集合 3.9 神秘的数 3.10 其他 3.11 Java异常 3.12 数组命名 3.13 数据库表命名规则 3.14 数据库字段命名规则 3.15 JSP文件命名 3.16 Servlet类命名 4. 书写格式规范 4.1 缩进 4.2 空格 4.3 对齐 4.4 空行 4

(转载)将一段符合XML格式规范字符串插入已有XML文档当中

想我们已经存在一个XML文档,结构如下: < xmlversion="1.0"encoding="utf-8">< employees>< employeeclass>< firstname>symbol< /firstname>< lastname>sn< /lastname>< /employeeclass>< /employees> 现在我们想就向现有的

IOS格式规范

IOS格式规范 目录 概述 日期格式 概述 日期格式 声明时间格式:NSDateFormatter *date_formatter = [[NSDateFormatter alloc] init]; 设值时间格式:[date_formatter setDateFormat:@"yyyy年MM月dd日HH时mm分ss秒"]; 设值locale:[date_formatter setLocale:[[NSLocale alloc] initWithLocaleIndentifier:@&q

第二章 导入数据到SAS | 格式规范数据读取

目录 2.1 导入数据的方法 2.2 利用导入向导读入 2.3 格式规范数据读取 2.3.1 指定原始数据位置(infile) 2.3.2 读取空格分隔原始数据(列表输入) 2.3.3 读取按列排列原始数据(列输入) 2.3.4 读取非标准格式的原始数据(格式化输入) 2.3.5 混合的输入样式(列表输入+列输入+格式输入) 2.1 导入数据的方法 将数据导入SAS的方法有很多,但可以归纳为四个基本类别,其中方法2.3是需要掌握的重点. 直接将数据输入SAS数据集 通过VIEWTABLE窗口(打

python代码格式规范

目前的规范基于pep-0008 基本格式 缩进 使用4个空格进行缩进 行宽 每行代码尽量不超过80个字符 理由: 这在查看side-by-side的diff时很有帮助 方便在控制台下查看代码 太长可能是设计有缺陷 换行 Python支持括号内的换行.这时有两种情况. 第二行缩进到括号的起始处 foo = long_function_name(var_one, var_two, var_three, var_four) 第二行缩进4个空格,适用于起始括号就换行的情形 def long_functi

Android开发代码格式规范

书写规范 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了. 2. 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进.另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式. 3. 花括号不要单独一行,和它前面的代码同一行.而且,花括号与前面的代码之间用一个空格隔开. public void method() { // Good } publ

62&gt;&gt;文档格式规范

不依赖编辑器,使用gedit编辑源文本. c/c++编程格式 类名: 函数名: 变量名: 宏名: 编辑文档格式 1.段间相隔3个空格,标题和正文相隔两个空格. 2.标题的标点符号尽可能少,不用句号. 3.注释和标题一样,再没有要求用注释符时不用,尽量简洁. 4.ctrl命令的格式形如,中间两个空格,不使用'+',:ctrl  z

论文参考文献格式规范【转】

参考文献(即引文出处)的类型以单字母方式标识,具体如下: [M]--专著,著作 [C]--论文集(一般指会议发表的论文续集,及一些专题论文集,如<***大学研究生学术论文集> [N]-- 报纸文章 [J]--期刊文章:发表在期刊上的论文,尽管有时我们看到的是从网上下载的(如知网),但它也是发表在期刊上的,你看到的电子期刊仅是其电子版 [D]--学位论文 :不区分硕士还是博士论文 [R]--报告:一般在标题中会有"关于****的报告"字样 [S]-- 标准 [P]--专利 [

php课程---Json格式规范需要注意的小细节

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等). 这些特性使J