.NET设计规范(八) C#编程风格约定(完)
第8章 C# 编程风格约定8.1. 通用风格约定8.1.1. 花括号的使用ü 左花括号“{”放在关键字或方法的下一行并与之对其。 例如: if (n > 0) { ... } private void Work(int n) { ... } ü 左花括号“{”要与相应的右花括号“}”对齐。 ü 在通常情况下,左花括号“{”单独成行,不与任何语句并列成行。 ü if、while、do语句后一定要使用{},即时{}号中为空或只有一条语句。 例如: if (n > 10) { Work(n); } 8.1.2. 空格的使用ü 关键字和左括号“(”应该用空格隔开。 例如: for (int i = 0; i < 10; i++) { ... } ü 在方法名和左括号“(”之间不要用空格,这样有助于辨认代码中的方法调用和关键字。 ü 多个参数用逗号“,”隔开,每个逗号后都应加一个空格。 ü 除了“.”之外,所有二元操作符都应该与它们的操作数隔开。一元操作符、++ 及 -- 与操作数间不需要空格。 例如: a += c + d; a = (a + b) / (c * d); while (d++ == s++) { n++; } Console.WriteLine("num is" + n); ü 语句中的表达式之间要用空格隔开。 例如: for (expr1; expr2; expr3) { ... } 8.1.3. 缩进的使用ü 要用4个连续的空格符来进行缩进。 不要用制表符(Tab)来进行缩进。 ü 要对代码块中的内容进行缩进。 例如: if (someExpression) { DoSomething(); } ü 要对Case代码块进行缩进,尽管没有使用花括号。 例如: switch (someExpression) { case 0: DoSomething(); break; } 8.2. 命名空间引用约定ü 引用解决方案的其他工程的类,在头文件中引用全部路径,如: using Codyy.CocoGlobalSession.GlobalSessionClient.RegionSession.GroupOp; RegionSessionGroupOpServiceProxyMethod regionSessionGroupOpServiceProxyMethod = new RegionSessionGroupOpServiceProxyMethod(); 如果一个解决方案中的两个工程中定义了相同的类,实例化该类时要指定全路径。 ü 引用本工程的类,写出全部路径, 如: GlobalSessionUtility.SessionUtility.GroupSession groupSession = new GlobalSessionUtility.SessionUtility.GroupSession(); 8.3. 命名约定ü 要在命名命名空间、类型及成员时采用PascalCasing大小写风格。 ü 私有字段用PascalCasing命名,并加上前缀“m_”。 例如: private int m_ValueOne; ü 私有静态变量用PascalCasing命名,并加上前缀“s_”。 static s_ValueTwo; private static s_ValueThree; ü 全局变量用PascalCasing命名。 internal static string GlobalSessionId; ü 要用camelCasing命名局部变量。 ü 要用camelCasing命名方法的形式参数。 不要用匈牙利命名法。 避免给局部变量加前缀。 ü 要使用c#语言中对应的别名,不要使用.net框架中的类型名。 例如:要使用int 而不是Int32,要使用object而不是Object。 8.4. 注释不要用注释来描述一些对任何人都显而易见的事。 ü 代码块的注释,避免使用块注释语法(/*…*/)。即使注释会有多行,也最好是使用单行注释语法(//…)。 ü 类、方法、构造函数、属性等非代码块注释采用以下形式: /// <summary> /// 主函数入口 /// </summary> /// <param name="args">参数说明</param> static void Main(string[] args) { } 不要把注释放在行尾,除非特别短。 //注释语句 TestVirtual t2 = new TestOverride(); //除非特别短,否则不要在此注释 8.5. 文件的组织不要在一个源文件中包含一个以上的公用类型,除非有嵌套类,或各类型之间的不同之处仅在于泛型参数的数量。一个文件中有多个内部类型是允许的。 ü 要用相同的名字来命名源文件及其包含的公用类型。 例如:String类应该在String.cs文件中。 ü 考虑根据下面给出的顺序和组别来对成员进行分组。 所有字段。 所有构造函数。 公有属性及其受保护的属性。 方法(所有显式实现的接口方法、内部方法、私有方法)。 事件。 所有嵌套类型。 例如: public class TestClass { #region 字段 #endregion #region 构造函数 #endregion #region 属性 #endregion #region 方法 #region 接口方法 #endregion #region 内部方法 #endregion #region 私有方法 #endregion #endregion #region 事件 #endregion #region 嵌套类型 #endregion } ü 要把不能公开访问的成员和显式实现的接口成员分别放在自己的#region块中。 #region 不能公开访问的成员 #endregion #region 显式实现的接口成员 #endregion ü 考虑在每个组别内根据字母顺序来组织成员。 ü 考虑根据由简单到复杂的顺序来组织重载成员。 ü 要把using指令放在命名空间生命之外。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |