分享
 
 
 

C#编码标准 - 指导和最佳实践

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

命名规范

1.利用Pascal的方式定义类型、方法名和常量

public class SomeClass

{

const int DefaultSize=100;

public SomeMethod()

{}

}

2.对于局部变量和方法的参数使用骆驼命名法

int number;

void MyMethod(int someNumber)

{}

3.接口的名称前加上I

interface ImyInterface

{…}

4.在私有成员变量前面加上m_。对于m_后面的变量名使用骆驼命名方法

public class SomeClass

{

private int m_Number;

}

5.对自定义的属性类加上后缀Attribute

6.对自定义的异常类加上后缀Exception

7.方法的命名使用动词----对象对,例如ShowDialog()

8.有返回值的方法的命名中要有返回值的描述,例如GetObjectState()

9.使用带有说明性的变量名

a) 避免单字符的变量名,例如I或t等。使用类似于index或temp这样有意义的名字。

b) 对于public或protected类型的变量避免使用匈牙利表示法。

c) 不要缩写单词(例如用num取代number)。

10.总是使用C#预定义而不要使用System名称空间中的别名,例如:

使用object而不是Object

使用string而不是String

使用int而不是int32

11.在使用泛型的时候,类型的首字母要大写。当处理.NET中的Type类型的时候,保留Type后缀。(C#2.0新特性)

//正确

public class LinkedList<K,T>

{…}

//避免

public class LinkedList<KeyType,DataType>

{….}

12.使用有意义的名字定义名称空间,例如产品名或者公司名

13.避免通过全限定方式使用类型名称,使用using关键字。

14.避免在一个名称空间中使用using关键字

15.把所有系统框架提供的名称空间组织到一起,把第三方提供的名称空间放到系统名称空间的下面

using System;

using System.Collection.Generic;

using System.ComponentModel;

using System.Data;

using MyCompany;

using MyControls;

16.使用代理推导而不要显式的实例化一个化代理(C#2.0新特性)

delegate void SomeDelegate();

public void SomeMethod()

{…}

SomeDelegate someDelegate=SomeMethod;

17.维护严格的代码缩进。不要使用tabs或非标准的缩进,例如一个空格。推荐的缩进是3到4个空格。

18.在和你的代码缩进处于同一个级别处为该行代码添加注释。

19.所有的注释都应该通过拼写检查。注释中的错误拼写意味着开发进度的延缓。

20.所有的类成员变量应该被声明在类的顶部,并用一个空行把它们和方法以及属性的声明区分开

public class MyClass

{

int m_Number;

string m_Name;

public void SomeMethod1();

public void SomeMethod2();

}

21.在最靠近一个局部变量被使用的地方声明该局部变量。

22.一个文件名应该能够反映它所对应的类名

23.当使用一个部分类并把该类分布到不同的文件中时,在每一个文件名末尾都加上该文件实现的部分在类整体中扮演的作用。例如:

// In MyClass.cs

public partial class MyClass

{…}

//In MyClass.Designer.cs

public partial class MyClass

{…}

24.总是要把花括号“{”放在新的一行

编码实践:

1. 避免在同一个文件中放置多个类

2. 一个文件应该只向在一个名称空间内定义类型。避免在一个文件中使用多个名称空间

3. 避免在一个文件内写多于500行的代码(机器自动生成的代码除外)

4. 避免写超过25行代码的方法

5. 避免写超过5个参数的方法。如果要传递多个参数,使用结构。

6. 一行不要超过80个字符

7. 不要手动去修改任何机器生成的代码

a) 如果修改了机器生成的代码,修改你的编码方式来适应这个编码标准

b) 尽可能使用partial classes特性,以提高可维护性。(C#2.0新特性)

8. 避免对那些很直观的内容作注释。代码本身应该能够解释其本身的含义。由可读的变量名和方法名构成的优质代码应该不需要注释。

9. 注释应该只说明操作的一些前提假设、算法的内部信息等内容。

10. 避免对方法进行注释

a) 使用充足的外部文档对API进行说明

b) 只有对那些其他开发者的提示信息才有必要放到方法级的注释中来

11. 除了0和1,绝对不要对数值进行硬编码,通过声明一个常量来代替该数值

12. 只对那些亘古不变的数值使用const关键字,例如一周的天数。

13. 避免对只读(read-only)的变量使用const关键字。在这种情况下,直接使用readonly关键字

public class MyClass

{

public const int DaysInWeek=7;

pubic readonly int Number;

public MyClass(int someValue)

{

Number=someValue;

}

}

14. 对每一个假设进行断言。平均起来,每5行应有一个断言。

using System.Diagnostics;

object GetObject()

{…}

object someObject=GetObject();

Debug.assert(someObject!=null);

15. 每一行代码都应该以白盒测试的方式进行审读。

16. 只捕捉那些你自己能够显式处理的异常。

17. 如果在catch语句块中需要抛出异常,则只抛出该catch所捕捉到的异常(或基于该异常而创建的其他异常),这样可以维护原始错误所在的堆栈位置。

catch(Exception exception)

{

MessageBox.Show(exception.Message);

throw;//或throw exception;

}

18. 避免利用返回值作为函数的错误代码。

19. 避免自定义异常类。

20. 当自定义异常类的时候:

a) 让你自定义的异常类从Exception类继承

b) 提供自定义的串行化机制

21. 避免在一个程序集中(assembly)中定义多个Main()方法。

22. 只把那些绝对需要的方法定义成public,而其它的方法定义成internal。

23. 避免friend assemblies,因为这会增加程序集之间的耦合性。

24. 避免让你的代码依赖于运行在某个特定地方的程序集。

25. 在application assembly(EXE client assemblies)中最小化代码量。使用类库来包含业务逻辑。

26. 避免显式指定枚举的值

[1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有