### C#编码规范详解 #### 0. 概述 编程不仅仅是实现功能的过程,更是创建易于维护、理解和扩展的代码的艺术。高效的编程不仅要求代码能够运行,还要求代码具有良好的可读性和可维护性。本指南旨在为C#开发者提供一套全面的编码规范,帮助他们写出高质量的代码。 #### 1. 针对的读者 本指南主要面向软件开发团队成员和项目管理人员。假设读者已经具备一定的软件开发基础,如熟悉C#或SQL Server等技术。此外,本指南同样适用于对代码审查感兴趣的测试人员。 #### 2. 命名规范 **2.1 快速入门** 下面是一个符合规范的代码片段示例: ```csharp namespace CyberTutor.Kids.Foo { /// <summary> /// Foo is this and that. /// </summary> /// <remark> /// This is an example code. /// </remark> /// <example> /// <code> /// MyFoo = new MyFoo(); /// </code> /// </example> public class MyFoo : FooMaster { protected MyObject _myProtectedVariable; MyObject _myPrivateVariable; // No need to put private key /// <summary> /// Asserts that a condition is true. If it isn't, it throws /// an <see cref="FooError"/>. /// </summary> /// <param name="message">The message to foo</param> /// <param name="condition">The Boolean condition to foo</param> public static void FooMethod(string message, bool condition) { if (!condition) { Assertion.Fail(message); } try (this) { DoThis(); DoOneMoreThis(); } catch (that) { throw new FooException(message); } } } } ``` **2.2 名词解释** - **命名规范**:规定了如何为变量、方法、类等命名。 - **匈牙利命名法**:一种传统的命名约定,其中变量名包含类型信息。 **2.3 大小写** - **PascalCase**:首字母大写,用于类名、接口名、枚举名等。 - **camelCase**:首字母小写,其余单词首字母大写,用于局部变量、参数等。 - **PascalCase**:用于方法名、属性名。 - **snake_case**:通常不推荐在C#中使用,但在某些特定场景下可用于标识符。 **2.4 Namespace命名规范** - 使用组织名称反向域名形式,如`com.companyname.productname`。 - 命名空间层次结构应反映应用架构和功能模块。 **2.5 Class命名规范** - 类名应使用PascalCase,简明扼要地描述类的功能。 - 使用完整的单词而非缩写。 **2.6 Interface命名规范** - 接口名称前缀通常为“I”,后跟类名。 - 例如,`IList`、`ICollection`。 **2.7 EnumerationType命名规范** - 枚举类型名称采用PascalCase。 - 枚举值使用PascalCase或全部大写字母。 **2.8 StaticField命名规范** - 静态字段常量使用全大写字母,单词间使用下划线分隔。 - 例如,`const string SOME_CONSTANT = "value";` **2.9 Parameter/Attribute命名规范** - 参数名使用camelCase。 - 属性名使用PascalCase。 **2.10 Method命名规范** - 方法名使用PascalCase。 - 应简洁且描述性强,避免使用模糊不清的名词。 **2.11 Property命名规范** - 属性名使用PascalCase。 - 属性名应清晰表达该属性的意义。 **2.12 Event命名规范** - 事件名使用PascalCase。 - 通常以“On”开头,后面跟随事件的描述。 **2.13 不要使用匈牙利方法来命名变量** - 避免使用带有类型信息的前缀,如`int iCount`应改为`int count`。 **2.14 文件命名** - 文件名应与类名一致,并使用PascalCase。 - 例如,`MyClass.cs`。 **2.15 用有意义的、描述性的词语来命名** - 变量、方法等的命名应尽可能描述其功能或用途。 #### 3. 惯用编码守则 **3.1 编排基本原则** - 代码块应适当缩进,通常使用四个空格。 - 使用空行来分隔不同的逻辑部分。 **3.2 不要在每个运算符和括号的前后空格** - 例如,`x + y`而非`x + y`。 **3.3 不要任意在括弧前后的空格** - 例如,`(x + y)`而非`( x + y )`。 **3.4 区段括弧不要分行** - 即使括号内的内容很长,也不建议将它们分成多行。 **3.5 减少无谓的分行及括弧** - 避免不必要的括号使用和分行,保持代码简洁。 **3.6 良好的编码习惯** - 注释清晰,尤其是复杂的逻辑部分。 - 尽可能使用最新的语言特性。 - 遵循DRY原则(Don’t Repeat Yourself)。 **3.7 声明(Declaration)** - 在类中声明成员变量时,考虑使用访问修饰符。 - 将相关的变量声明在一起,提高代码可读性。 **3.8 AccessLevel** - 根据变量的作用范围选择合适的访问级别。 - 例如,私有变量使用`private`,保护变量使用`protected`。 **3.9 注解** - 使用XML注释为公共API编写文档。 - 注释应简洁明了,描述方法的行为和参数含义。 **3.10 异常处理(Exception handling)** - 使用`try-catch`块来处理可能发生的异常。 - 对于可恢复的错误,提供明确的异常处理逻辑;对于不可恢复的错误,则抛出异常。 以上是关于C#编码规范的一些基本介绍和要点,遵循这些规则有助于编写出高质量、可维护的代码。
- luck2008032019-07-14有一定的参考价值
- junyi13142012-06-27非常全面
- 粉丝: 50
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助