提高代码的可读性
提高代码的可读性,不仅方便自己以后阅读,而且可以让后来的人更好阅读你的代码,最近一直在积累这方面的知识,以后严格遵循这种写法,做到“有法可依”,有更好的写法待用到之时再进行更新补充,在这里做一下笔记。
1.注释和文档
这里有一个技巧,可以方法的上面连续敲击三下"/",就可以自动补充,写对应的注释,无论是js还是c#,在写代码之前,都要先进行写注释,采用动宾结构,如:“获取用户信息”,“添加用户信息”。陈述方法的做了什么事,言简意赅,当然良好的命名规范易读性更好。
/// <summary> /// 在这里写注释 /// </summary> /// <param name="param"></param> /// <returns></returns> public actionresult index(string param) { return view(); }
2.代码分组
为了让代码的可读性更好,可以对代码进行分组,尽量让同一逻辑放在同一组,即用换行隔开。
//计算还款金额 var repaymoney = (from h in db.jf_fin_repay where h.clientid == bpid && h.state == (int)financingenum.finrepaystate.还款成功 && h.ordertype == ((int)finordertype.还款单).tostring() && h.financetype == ((int)finordertype.提货款).tostring() select h.repaytotalmoney).sum(); if (request["state"] = "已保存") { ///... } if (true) { ///... }
3.保持一致的命名规范
命名规范,我强制使用驼峰式和帕斯卡命名规范,当然使用其他的也是可以的,没有问题的,主要习惯便可以,但是必须保持一致,js,c#的代码的命名规范都要使用驼峰式或帕斯卡命名,c#和js命名有所不同,对应使用即可,如:
js:
//获取用户信息 function getuserinfo() { ///... }
c#:
/// <summary> /// 获取用户信息 /// </summary> public void getuserinfo() { ///... }
4.dry原则(摘录于阮一峰博客)
dry是 don't repeat yourself 的缩写,意思是"不要重复自己"。
软件工程名著《the pragmatic programmer》首先提出了这个原则。它的涵义是,系统的每一个功能都应该有唯一的实现。也就是说,如果多次遇到同样的问题,就应该抽象出一个共同的解决方法,不要重复开发同样的功能。
这个原则有时也称为"一次且仅一次"原则(once and only once)。
如果多次遇到同一问题,就应该将对应的方法进行抽象,进行封装,便于以后重复使用,对于一些常用的公共类或者方法可以进行积累,保存于github的项目中等,保存起来便于以后拿取,最近新建了一个项目,对曾经做过的一些公共的、可以抽象封装的方法等进行积累,避免重复开发,以后这就是经验。
5.避免深嵌套
过多的嵌套会极大降低代码的可读性:
//获取用户信息 function getuserinfo() { ///... if (true) { if (true) { if (true) { ///.. } } } }
尽量减少代码嵌套,不多于两层:
//获取用户信息 function getuserinfo() { ///... if (true) { ///.. } if (true) { ///.. } if (true) { ///... } }
6.限制行长度
行长度过长也是会极大降低代码的可读性:
//计算还款金额 var repaymoney = (from h in db.jf_fin_repay where h.clientid == bpid && h.state == (int)financingenum.finrepaystate.还款成功 && h.ordertype == ((int)finordertype.还款单).tostring() && h.financetype == ((int)finordertype.提货款).tostring() select h.repaytotalmoney).sum();
可以针对一致的特殊“符号”进行换行,如,“&&”,“||”,“,”等:
//计算还款金额 var repaymoney = (from h in db.jf_fin_repay where h.clientid == bpid && h.state == (int)financingenum.finrepaystate.还款成功 && h.ordertype == ((int)finordertype.还款单).tostring() && h.financetype == ((int)finordertype.提货款).tostring() select h.repaytotalmoney).sum();
7.参数值的命名
对于一些参数的值,有时我们需要对一些数据进行区别,就会使用不同的参数值,进行传递,这时候,使用的参数值,如果是一些无意义的值,就会增加代码的阅读的难度:
if (request["state"] = "1") { ///... }
可以使用一些有意义的名称保存,中文或者英文,切忌使用一些无意义的数字、字母,使用硬编码使代码易读性更好:
if (request["state"] = "已保存") { ///... }
8.避免写新代码
在做一个新功能的时候,可以思考,别人是否已经实现这个功能,有没有工具,函数等已经实现你想要的功能,可以从网上查找或问同事是否已经实现对应的功能,避免盲目重复造*,代码越少,bug越少。
the best code is the code that isn’t written ”
9.局部变量的命名
这是一个让我纠结很久的话题,很多人都有不同的命名习惯,也不能说谁的好,谁的不好,把一些固定的用法,按照自己的习惯进行规范:
//array后缀的数组变量 object[] arr = ...; //使用类型的缩写 datatable dt = ...; //变量的声明,类型尽量使用接口,这样对于修改实现容易 ilist lst = new arraylist(); //flag是一个常用的变量 bool flag = false; //item也是一个常用的命名 foreach (object item in lst) { if (flag) { console.write(","); } flag = true; //flag之前有一个空行,代码中应有恰当的分行 } //使用符合短语对变量命名 string name = obj.gettype().getname();
参考:
https://www.cnblogs.com/jobs/archive/2004/07/22/26341.html#26355
上一篇: SVN 版本控制
下一篇: html 转 pdf