DotNet编程规范(草)part2

本文详细介绍了C#编程中的代码组织、注释规范、编码惯例等最佳实践,包括类结构、变量定义、函数说明等内容,帮助开发者提高代码质量和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2排版注释
1.         采用如下顺序组织类中的代码:
类说明(注释)
using语句组
名称空间声明
类声明
.NEt标准控件。
USER CONTROL或CUSTOM CONTROL
私有变量
公有变量
方法声明
2.         尽量使用using语句来避免使用类的全路径名称。
3.         using语句组中首先是框架的命名空间,其次是第三方的,最后是自定义的。
4.         每行缩进4个空格,不要使用tab键进行缩进。(这个有不同的意见)
5.         一般注释开始使用//双斜线,不要使用*注释,注释和代码使用同样的缩进。
6.         不要注释显而易见的代码,好的代码应该是自解释的。好的变量/函数名可减少注释。
7.         注释要简洁明了,注意不要因为错别字导致歧义。
8.         修改代码时,总是使代码周围的注释保持最新。
9.         注释放在被注释语句的上面,并与其上的代码用空行分隔。
10.     在每个文件头必须包含以下注释说明
/*----------------------------------------------------------------
 Copyright (C) 2007 石化盈科信息技术有限公司版权所有。
 文件名:
 文件功能描述:
 创建人:
 创建时间
----------------------------------------------------------------*/
11.     每个类前有如下注释说明(一个文件包含一个类的时候,可选)
/*----------------------------------------------------------------
 类名:
类功能描述:
 创建人:可选
 创建时间:可选
----------------------------------------------------------------*/
 
12.     每个函数必须有如下注释说明 (可以参考C# 的自己的格式,但应包含下列内容)
/*---------------------------------------------------------------
///函数名:
///功能描述:
///参数列表说明:
///调用的主要函数列表:
///创建人:可选
///创建时间:可选
///修改人:
///修改时间:
///修改内容描述:
-------------------------------------------------------------------*/
13.     每行只定义一个变量,变量的注释放在变量定义的右边。
14.     一行代码不应超过80个字符。
15.     全局变量必须要有注释。
16.     所有的成员变量在类的开始进行定义,并用空行于其他的方法分开。
17.     局部变量的定义尽量靠近使用的地方。
18.     左花括号总是位于新行的开始,而不是位于类名或函数名后。
19.     一元运算符与运算数之间可不用间隔,二元运算符前后用空格隔开。
20.     如:
int a;
int b;
int c;
a = 9;
a++;
b = 9;
c = a + b;
for (a = 0; a < c; a++)
{
    b++;
}
21.     if,for,whil等语句的执行体部分一定要用花括号括起来,即时只有一语句。
22.     匿名方法的代码排版和普通函数体保持统一风格,作花括号在新行和delegate的声明左对齐。
23.     使用#Region将代码组织在一起. 以便管理源代码。
24.     避免在函数中使用#if # else 来包含代码,应适用 condition 方法。
public class MyClass
{
[Conditional(“MySpecialCondition”)]
public void MyMethod()
{
}
}
 
3编码惯例
1.         避免在一个文件中定义多个类。
2.         一个文件中只定义一个命名空间。
3.         一个函数不要超过200行。
4.         函数的参数如果超过5个,建议使用结构进行封装。
5.         不要随意改动机器生成的代码。尽可能使用局部类将需要维护的代码分离出来。
6.         使用常量代替对数值的硬编码。
7.         对于只读变量使用readonly 指示符。
8.         一个程序集中避免出现多个Main函数。
9.         仅对最需要的类型标记为public,其他的标记为internal。
10.     避免使用friend程序集,这样增加了程序集的耦合度。
11.     代码避免依赖于从某个特定位运行的程序集。
12.     应用程序集(.exe)中代码越少越好,业务逻辑尽量封装到类库中。
13.     不要自定义枚举的内部数据表示类型,避免给枚举类型显示赋值,除非是2的幂。
14.     避免使用?:操作符。
15.     避免在条件判断表达式中使用返回bool的函数。应该将其赋给变量,然后再进行判断。
16.     尽量使用从0计数的数组。
17.     使用属性,避免使用public/protect变量。
18.     使用 for语句显示初始化数组。
19.     避免使用new继承修饰符,而是使用override。
20.     对非密封类总是将public和protected方法标记为virtual。
21.     除非为了互操作,否则不要使用不安全的代码。
22.     不要显示类型转换,应适用as操作符进行类型定义转换。
23.     对于有索引的集合使用基于0的索引。
24.     使用EventHandler<T>代替自己定义的事件处理委托。
25.     使用EventHelper发布事件,而不要显示的抛出事件。
26.     避免显示声明委托的实例,应如下定义委托:
delegate void SomeDelegate();
void SomeMethod()
{
}
SomeDelegage someDelegate = SomeMethod;
27.     不要使用只有一个方法的接口,接口中方法的数目不要超过20个。
28.     不要把事件作为接口的成员。
29.     优先使用接口,其次考虑使用抽象类。
30.     优先使用明确的接口实现。
31.     未经明确声明不要使用一个对象具有的接口。
MyObject myObject;
IMyInterface myInterface;
myInterface = myObject as IMyInterface;
32.     使用资源代替把呈现给用户的字符串进行硬编码。
33.     不要把与部署有关的字符串进行硬编码。
34.     使用String.Empty 给空字符串赋值。
35.     创建一个长字符串时,使用StringBuilder代替string。
36.     不要再结构体中提供函数。
37.     当使用静态成员变量是提供静态构造函数。
38.     能使用前绑定就不要使用后绑定。
39.     给switch语句提供default子句,进行异常判断。
40.     除非在一个构造函数中调用另一个构造函数,否则尽量不要使用this引用。(不明白)。
41.     除非名称冲突或者需要调用父类的构造函数,否则不要使用base引用。(不明白)
42.     不要使用GC.AddMemeryPresure
43.     不要依赖HandleCollector
44.     出于性能的考虑,除了溢出检测,不要使用check关键字。
<以下提到了限制的概念还不明白 >
45.     使用泛型的代码中避免与System.Object进行类型转换,而是使用限制或as算符。
//避免
  class MyClass 
      {   
          void SomeMethod(T t)   
         {
              object temp = t;     
              SomeClass obj = (SomeClass)temp;   
         }
       }
       //正确
       class MyClass where T : SomeClass
       {  
         void SomeMethod(T t)  
          {
             SomeClass obj = t;   
          }
       }
46.     泛型接口不要定义限制。接口层的限制通常能用强类型代替。
47.     不要再接口中定义与方法相关的限制。
48.     不要再委托中定义限制。
49.     如果类或方法定义了泛型和非泛型两种方式,优先使用泛型。
当实现一个继承自非泛型的接口的接口时,要显示声明所有方法,并把非泛型方法委托给泛型方 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值