@萧浪

导航

C#编码规范

 

C#编码规范

NameStandard

1.        类的命名规范:

1)        用名词或名词短语命名类。

2)        使用Pascal大写。 public class FileStream {}

3)        不加任何类前缀。

4)        文件名和类名要匹配。对于类HelloWorld, 相应的文件名应为 helloworld.cs

5)        当类只需有一个对象实例(全局对象如Application等),必须以Class结尾。 Class ScreemClass

6)        当类只用于作为其他类的基类,根据情况,以Base结尾。  Class CarBase

2.        接口的命名规范:

1)        使用名词或名词短语,或者描述行为的形容词来命名接口。例IComponentIPersistable

2)        使用Pascal大写。

3)        在接口名前加前缀I,以表示这个类型是一个接口。需要在类名前加上I而并不表示它是一个接口,只要I后面的字符是小写就可(例如,IdentityStore。)

4)        一对类/接口组合名称要相对应,两个名称的不同之处只是接口名前有一个I前缀。

 public interface   IComponent {}

 public class Component : IComponent{}

3.        方法命名规范:

1)        用动词或动词短语命名方法。

2)        使用Pascal大写。RemoveAll()

3)        有返回值的方法的命名中要有返回值的描述,例如GetObjectState() ,如果返回值是bool,不要直接用做判断语句的条件。例如避免 if(IsEverythingOk())

4.        属性命名规范:

1)        用名词或名词短语命名属性。

2)        Pascal大写命名属性。成员变量与其属性的差别只在于第一个字母的大小写。

3)        属性与变量的类型要一样。 

5.        变量命名规范:

1)        变量和方法参数使用Camel 大小写形式。 int totalCount = 0;

6.        总体规范:

1)        名字要有意义,用描述性的词语来命名,能通过名字知道功能(用于循环迭代的变量例外)。

2)        避免缩写。名字中不加下划线。

3)        使用有意义的名字定义名称空间,如产品名或者公司名 。把System系列名称空间组织到一起放上面,第三方提供的名称空间放到系统名称空间下面。

Remark:

Pascal大写一种大小写形式,所有单词第一个字母大写,其他字母小写。

Camel大写一种大小写形式,,除了第一个单词,所有单词第一个字母大写,其他字母小Structure&FormatStandard

1.  缩进用 TAB,不用 SPACES

2.  在每个运算符前后都空一格。

3.  花括弧 ( {} ) 需和括号外的代码对齐。每个花括弧需独立一行。

4.  对于if语句,总使用一对{}把下面的语句块包含起来,哪怕只有一条语句也是如此。

5.  用一个空行来分开代码的逻辑分组。

6.   在一个类中,各个方法需用一空行,也只能是一行分开。

7.   注释需和代码对齐。只在必需的地方注释。行数不多的注释会使代码看起来优雅。(前提是你的代码命名有意义和逻辑结构清晰)。

8.   如果应为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。

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

10. 避免使用大文件。如果一个文件里的代码超过500行,必须考虑将代码分开到不同类中。

11.  总是使用接口。避免只有一个成员的接口,努力保证一个接口有3~5个成员。当使用抽象类的时候,提供一个接口。

12. 避免写太长的方法。如果一个方法发代码超过25行,应该考虑按不同操作将其分解为不同的方法,这样各个功能可以很容易被重用,而且各个方法内的代码改变也很容易理解。

13. 一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。

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

15. 除了要在switch语句块中实现代码跳转,不要使用goto关键字。

16. 一定要让你的应用程序支持跟踪和日志。


ProgramStandard

1.  别在程序中使用固定数值,用常量代替。(01有例外)只对那些亘古不变的数值使用const关键字,例如一周的天数。

2.  别用字符串常数,用资源文件。

3.  不在代码中使用具体的路径和驱动器名。使用相对路径,并使路径可编程。且永远别设想你的代码是在“C:”盘运行。

4.  对一个数值变量采用不是0,-1等的数值初始化,给出选择该值的理由。

5.  避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。否则很难知道是哪个方法在什么时候修改了它的值。

6.  别把成员变量声明为 public protected。一般声明为 private 而使用 public/protected Properties

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

8.  避免 string name=””;  正确 string name=String.Empty;

9. 必要时使用enum,别用数字或字符串来指示离散值。enum MailType {Html PlainTextAttachment} 使用各个离散时采用MailType.Html的形式,而不是逐个的“Html”。避免为枚举指定一个类型。

10. 使用C# 特有类型,而不是System命名空间中定义的别名类型。好:  int age; string name; object contactInfo; 不好:Int16 age; String name; Object contactInfo;

11. 应用程序启动时作些自检并确保所需文件和附件在指定的位置。必要时检查数据库连接。出现任何问题给用户一个友好的提示。 如果需要的配置文件找不到,应用程序需能自己创建使用默认值的一份。

12. 异常处理 :

(1)错误消息而应给出具体错误消息和相应的用户需要做的操作。

(2)千万不要捕捉了异常却什么也不做。异常信息要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。 

 (3)别写太大的 try-catch 模块。如果需要,为每个执行的任务编写单独的 try-catch 模块。 这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息。

(4)如果应用程序需要,可以编写自己的异常类。自定义异常不应从基类SystemException派生,而要继承于. IApplicationException。对自定义的异常类加上后缀Exception

(5)不必每个方法都用try-catch。当特定的异常可能发生时才使用。不必在所有方法中捕捉一般异常。不管它,让程序崩溃。这将帮助你在开发周期发现大多数的错误。

(6)数据库操作和文件操作时,finally很必要。

posted on 2009-09-24 07:22  @萧浪  阅读(338)  评论(2编辑  收藏  举报