编程规范的目的是让代码更容易阅读,更容易维护,”代码是写给人看的”这个观点应该是写代码的基本原则。
1、命名规则:最好变量命名长度为6-15个字母之间,明确地表达出每个变量的意思,不要使用歧义单词或者生僻单词,方法命名遵循同样的规则,最好用动词表示,譬如Set开头表示设置、Match表示匹配等
2、方法长度:尽量使用短的方法体,一个方法体里面的代码行最好不要超过80行,超过就应该考虑把里面独立的内容提取放到另一个方法里面(也就是所谓的重构)
3、参数个数:参数个数不要太多,如果超过7个参数,可以考虑使用对象进行封装进行传递
4、逻辑判断:一个方法里面不要嵌套太多的逻辑判断,超过三层(理论上五层)的判断就可以考虑把其中的一部分独立成新方法调用
5、生命周期:尽量缩短变量的存活周期,不是必须使用尽量不要使用全局变量
6、变量跨度:变量声明定义开始到第一次使用该变量的代码行之间的行距尽可能短
7、字面常量:使用某类型的某个值作为参数(譬如:int status=1,string returnType=”list”等),尽量不要使用这样的参数,原因有二:字面常量不易于阅读;字面常量不方便修改,解决方案为定义全局可用的全局常量(命名参照1)
8、字符串拼接:需要通过循环进行字符串拼接的,尽量使用StringBuilder变量来拼接,而不是使用string的”+”进行拼接,对于较长的字符串可以使用String.Format()方法进行拼接, string.contact()是”+”的完整写法
9、垃圾回收:在操作非托管对象(如流操作)的时候尽量使用using(),譬如 using (StringWriter sw = new StringWriter(sb)){},不论在过程中是否发生异常,对象sw会在改程序段的最后自动调用sw.close()方法,这样能防止漏写,让程序自动回收处理。
10、异常处理:不要用TryCatch来保证数据的转换是否正确(譬如把Convert.ToInt32(“aaa”)这样的错误语句放到TryCatch里捕获),因为捕获异常是非常耗费性能的,将会是正常程序耗时的倍数级。每个主方法都应该用TryCatch包起来,被调用的方法出现异常不及时处理则不要用TryCatch包起来。
11、关于注释:注释不是程序的必要组成部分,好的命名可以省去不必要的注释,对于难懂的逻辑方法才有必要注释。
12、关于装箱:对于已知类型的转换最好显示转换,否者CLR会自动给你进行转换,譬如 int tempNum=5;string tempStr=”aaa”+tempNum.ToString() 要比string tempStr=”aaa”+tempNum好,在传参过程中装箱最为频繁,最好的解决方法是使用泛型。
13、代码格式:普通的缩进可以考虑vs自带的快捷功能,快捷操作为 Ctrl+E+D,对于一行代码的长度最好是不要超过80个英文字母(普通A4纸的宽度)
14、数据操作:在写Query语句时在每张表后面加上 with(nolock) 以防止同时操作数据库是出现死锁,在Update、Insert、Delete时在表后面加上 with(rowlock) 防止出现脏读