提高代码的可读性
2018-10-06 08:07:11来源:博客园 阅读 ()
提高代码的可读性,不仅方便自己以后阅读,而且可以让后来的人更好阅读你的代码,最近一直在积累这方面的知识,以后严格遵循这种写法,做到“有法可依”,有更好的写法待用到之时再进行更新补充,在这里做一下笔记。
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
http://news.51cto.com/art/201708/549819.htm
http://news.51cto.com/art/201710/554067.htm
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- 为你介绍asp.net的执行事务代码 2020-03-18
- HTML标签删除HTML示例代码 2020-03-08
- MVC异步分页代码分享 2020-02-21
- asp.net网站实现接入QQ登录示例代码 2020-02-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash