1. 避免将多个类放在一个文件里面。 (原子性)
2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。
3. 一个文件最好不要超过1000行的代码。
4. 一个方法的代码长度最好不要超过50行。
5. 避免方法中有超过5个参数的情况。如果超过了,则应使用Class来传递多个参数。
6. 每行代码不要超过100个字符。
7. 避免利用注释解释显而易见的代码。
a) 代码应该可以自解释。好的代码本身就应具体良好的可读性,所使用的变量和方法
命名一般情况下不需要注释。
8. 不要硬编码数字的值,尽量使用构造函数或可配置文件设定其值。
9. 只有是自然结构才能直接使用const(常量),比如一个星期的天数。
10. 每一个方法都应该通过白盒方式的测试。 (Unit Test)
11. 在捕获(catch)语句的抛出异常子句中(throw),总是抛出原始异常,用以维护原始错误
的堆栈分配。
catch(Exception exception) { MessageBox.Show(exception.Message); throw ; //和throw exception一样。 }
12. 避免方法的返回值是错误代码。
13. 避免使用try catch 作为条件判断语句。
14. 尽量不要提供public 和 protected的成员变量,使用属性代替他们。
15. 在不是sealed的类中总是将public 和 protected的方法标记成virtual的。
16. 避免显式的转换,使用as操作符进行兼容类型的转换。
Dog dog = new GermanShepherd(); GermanShepherd shepherd = dog as GermanShepherd; If (shepherd != null ) {…}
17. 当需要构建较长的字符串的时候,应该考虑使用StringBuilder不要使用string来处理。
注:string每次要创建一个新的实例,较占用空间,并产生了相对StringBuilder更大
过于频繁的字符串操作,采用StringBuilder是一个良好的习惯。
18. 通常情况下避免有从System.Object转换来和由System.Object转换去的代码,而使用
强制转换或者as操作符替换。
19. 初始化类的实例时,除非十分必要,否则不要赋null值。
20. 设置方法必须以【Set】开头;如:SetPrice(Product, decimal);
必须以【Get】开头;如:GetPrice(Product);
必须以【Add】开头;如:AddProduct(Product);
必须以【List】开头,如:ListUser(string);
真假判断的方法或属性必须以【Can】开头,如:CanDelete(long)
真假判断的方法或属性必须以【Is】开头;如:IsAdministrator(User);
21. 对于相同功能的方法要尽量重载;
22. 类的私有成员, 第一个单词首字母小写其余首字母大写, eg: isStudent;
23. 类的属性名, 所有单词的第一个首字母都要大写, eg: IsStudent;
24.类、枚举、结构体的名字, 所有单词的第一个首字母都要大写; eg: Student;
25.除类的私有成员外的变量, 均为第一个单词首字母小写其余首字母大写。eg: isStudent;