“ 一颗老鼠屎,坏了一锅粥,代码也是如此。”

在我们的项目中,也许在刚开始开发的时候,大家都会遵从一些规范来实施,但是当业务进度催的紧,或者人员变动,随着时间的迁移,项目不断的迭代以后,这时的代码可能就会出现一些“坏味道”了。

“坏味道”代码的出现可能不会影响我们的业务逻辑,大家自然也就比较容易忽视掉了,但是这如同是给我们代码埋下的定时炸弹,当爆炸的那天,需要我们背锅处理的时候,就会后悔当初为何不去解决这些问题呢?下面我们来看一下有哪些“坏味道”代码可以提前处理的吧。

1、多此一举型代码。

if(a > b){return true;
}else{return false;
}

也许一些经验不那么老道的开发会觉得这段代码没问题呀,可以跑得通,确实,在逻辑上是没问题的,但是有更简洁明了的写法为何不用?if() 里面的条件是boolean ,然后我们的返回值也是boolean,所以可以改写成

return a > b;

2、瞎命名型代码。

int a;
String wzbt; // 文章标题
String fastdi; //fast di 快递  。。中西结合...

以上只是不规范命名的实例的冰山一角,良好的命名除了见名知意以外,还可以在长时间以后回来阅读代码时,更快的回忆起业务逻辑,不至于在各种无解的命名中乱了手脚,为了一时的方便而随意命名是非常不值得的。

3、if完一定要加else型代码

if(condition){//dosm
}else{return ;
}if(condition){//dosm
}else{throw new Exception();
}​​​​while(xx){if(condition){//dosm}else{continue;    }
}

很多情况下,我们通过一些语句的前置类减少不必要的else,让代码看起来更简练清晰。

if(!condition){return ;
}
//dosmif(!condition){throw new Exception();
}
//dosm

  4、复制粘贴型

举个例子,项目中A模块引入B模块的优惠券业务,此时C模块也要引入B模块的优惠券业务,由于此时的优惠券业务可能是B模块中的几行代码,很多人就为了贪图方便,直接复制这几行代码直接放到C模块了。so easy,代码完美运行。

看起来似乎又没什么毛病,此时程序员的天敌产品经理过来了,他说在要在优惠券逻辑前面加点限制条件,ok,那么此时就要改动A模块跟B模块2份代码,而且要保持一致性,这个需求就完成了。过了一个版本,D模块也要引用优惠券业务,此时你又愉快的复制过去,然后可爱的产品经理又过来跟你说,这个版本我们要砍掉前面的限制条件...这时候你就要同步三段代码...跟产品经理的一场大战估计在所难免了。

所以从上面的案例中,如果我们一开始不偷懒把公共逻辑抽取出来,在各个模块引用的话,不论怎么修改,我们只要维护一份逻辑就可以,不至于手忙脚乱。

5、又长又臭型代码

此类坏味道代码一般出现在“有历史“的代码中,经过不同开发人员的迭代,一个方法可能会出现几千行的情况,即使有注释,也会让人看得痛不欲生,这时候刚接手修改的人必然会说一句“WTF”了。

所以这就要求我们在平时写代码的过程中养成提炼的习惯,一般来说,当某块业务逻辑需要注释来说明的时候,一般都可以提炼成方法来调用,通过这种方式会使得阅读代码的时候逻辑更加清晰。

还有一种又长又臭情况是出现在方法的参数中,不断的迭代过程也会导致参数的增加或者修改,甚至有看过朋友公司的代码出现一个方法10多个参数的情况。一般来说,当参数超过5个的时候就要考虑封装到对象当中了。

6、无病呻吟型

//输出info日志
logger.info("xxx");//定义num变量
int num  = 0;
...

上面举例的是一些无关痛痒的注释,当代码中充斥着这些玩意的时候会让人觉得很臃肿,当你做到上面五点的时候,代码已经不需要太多注释了(滑稽),所以我们的注释要注释到痛点,具体可参考《阿里java开发规范手册》

细节决定成败,在我们工作的过程中,当然还有很多需要我们注意的细节,大家有什么心得可以留言交流一下~

最后推荐一下 <重构 改善代码的既有设计>这本书,比较详细的介绍有那些坏味道需要重构的地方。

喜欢的话,劳烦关注一下微信公众号《深夜里的程序猿》噢~

优化代码中的“坏味道”相关推荐

  1. 消除代码中的坏味道,编写高质量代码

    消除代码中的坏味道,编写高质量代码 Intro 想要写出较好的代码,保证代码的高质量需要时刻警惕代码中的坏味道,今天分享一下,我觉得平时写的代码中可能会出现的坏味道代码的一些示例 常见的坏味道代码 B ...

  2. java 代码坏味道_代码中的坏味道

    前言 在日常生活中,当我们买的水果放久了之后会发出一种难闻的气味("坏味道"),这个时候我们就应该把它扔掉.同样,代码也有"坏味道",当然确定什么是和不是代码& ...

  3. 优化代码里的 “ 坏味道 ”

    " 一颗老鼠屎,坏了一锅粥,代码也是如此." 在我们的项目中,也许在刚开始开发的时候,大家都会遵从一些规范来实施,但是当业务进度催的紧,或者人员变动,随着时间的迁移,项目不断的迭代 ...

  4. **Java满汉全席中的坏味道**

    Java满汉全席中的坏味道 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一 ...

  5. xml中else if写法_面试官:优化代码中大量的if/else,你有什么方案?

    一个快速迭代的项目,时间久了之后,代码中可能会充斥着大量的if/else,嵌套6.7层,一个函数几百行,简!直!看!死!人! 这个无限循环嵌套,只是总循环的一部分...我已经绕晕在黄桷湾立交 仔细数了 ...

  6. 怎样优化代码中那么多的if else

    if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼. 例如下面这个伪代码: 是不是很崩溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我 ...

  7. java else if和switch_如何优雅地优化代码中的的if else和switch

    引言 一般来说,随着我们项目的迭代以及业务的越来越复杂,项目中的分支判断会原来越多.当项目中涉及到复杂的业务判断或者分支逻辑时,我们就需要考虑是否需要对项目进行重构了,或者if else和switch ...

  8. 消灭 Java 代码的“坏味道”

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 导读 明代王阳明先生在<传习录>谈为学之道时说: 私欲 ...

  9. 消灭 Java 代码的“坏味道”【转】

    原文地址:https://mp.weixin.qq.com/s/-YQsD6jJuxewFjQtyX16UA 明代王阳明先生在<传习录>谈为学之道时说: 私欲日生,如地上尘,一日不扫,便又 ...

最新文章

  1. LabVIEW图像灰度分析与变换(基础篇—4)
  2. ipad php mysql_PHP中的MYSQL常用函数
  3. pku 2954 Triangle pku 1265 Area Pick定理的应用 + 叉积求多边形面积
  4. C# 读取TXT文本数据 添加到数据库
  5. 237. Delete Node in a Linked List
  6. windows录屏_电脑自带录屏软件怎么打开?详细操作教程
  7. [导入]值得收藏经典民间偏方
  8. (转)MyBatis框架的学习(一)——MyBatis介绍
  9. 重装系统Win10电脑磁盘被写保护怎么办
  10. Python Flask教程
  11. linux用dd命令刻录u盘,巧用linux dd命令刻录启动U盘
  12. 2022泰迪杯数据挖掘挑战赛C题思路及赛后总结
  13. html5css3网站设计基础教程答案,HTML5+CSS3网站设计基础教程_动手实践源代码
  14. P3669 [USACO17OPEN]Paired Up S 贪心+双指针
  15. 记:一次意外JTAG使用引发对于STM32内核的了解
  16. 以智汀和小米为例,聊一聊智能网关在智能家居中的应用
  17. python初学一(字符串str的处理方式)
  18. 如何查询电商平台真实销售数据?(京东怎么看销量)
  19. 输入分钟输出小时python_python格式化输出时间
  20. ai前世识别_AI人脸识别前世今生app下载_AI人脸识别前世今生 安卓版v2.0[db:版本号] - Win7旗舰版...

热门文章

  1. android 文件编辑,文件编辑软件(在线文档编辑)
  2. 证券业上云内参: 深圳证券信息
  3. C++之 友元(friend)
  4. fileupload.class.php,PHP 文件上传类 FileUpload 高洛峰老师 细说PHP
  5. 利用Bootstrap制作一个流行的网页
  6. SpringBoot-RSA加密
  7. 抖音的服务器到底啥配置?
  8. photoshop图层解锁及不能解锁的原因
  9. 关于计算机网络的学习
  10. 永久关闭smartGit弹出“非商业用途”的30s界面