巧用短路逻辑优化代码质量
来源:互联网 发布:网络三字经全文解释 编辑:程序博客网 时间:2024/06/05 08:08
1、我们首先来看一种数组去重的写法:
var arr=["a","b","a","c","a","b"];function unique1(arr){ for(var i =0,uarr=[];i<arr.length;i++){ for(var k =0;k<uarr.length;k++){ if(arr[i] == uarr[k]){ break; } } uarr[k]=arr[i]; } return uarr;}console.log( unique1(arr) );
2、问自己一句:你觉得方法有问题吗?你可以优化吗?
3、稍有经验的人立马就会发现问题所在,但是对于当时还是新手的我来说,真的发现不了,而且别人给我讲了好几遍,才让我恍然大悟。其实问题就出在这句:
uarr[k]=arr[i];
因为如果arr[i]已经在uarr中有了,那么k一定小于uarr.length,uarr[k]=arr[i]代表覆盖,即会重新赋值一次,虽然最后的结果是一样的,但这样的代码质量不高。
4、很多人这个时候就会想到:那就在前面加一句条件判断:
if(k==uarr.length) { (uarr[k]=arr[i]);}
工作中碰到的很多同事遇到类似的问题都是这样处理的,这本身并没有错,但其实我们还有一种更简单的方法——利用短路逻辑:
“&&” 如果前面为假,就不再执行后面的语句。
“||”如果前面为真,就不再执行后面的语句。
所以上面的那一段就可以直接写成:
k==uarr.length && (uarr[k]=arr[i]);
5、可是很多人并不理解和接受这种直接明了的写法,那不如我们再举一例:
if( response.status.conditions.length != 0 ){……}
这样的写法是很多初入职场的人会写出来的逻辑判断,可是在运行中是会出问题的。如果response.status为undifined/none,那么response.status.conditions就会报错,于是有些人就会这么处理:
if (response) { if (response.status) { if (response.status.conditions.length ) { …… } } }
其实可以简写成:
if(response && response.status && response.status.conditions.length){ ……}
所以,我们在平时写代码时,巧用短路逻辑,可以优化代码质量。
阅读全文
0 0
- 巧用短路逻辑优化代码质量
- PHP代码质量优化
- java逻辑转代码,代码逻辑优化
- 代码质量与性能优化
- 逻辑短路
- 短路逻辑
- 存储过程-------------代码优化、逻辑优化
- 精益求精、编程经验、高质量代码、严密逻辑、编码要求
- Unity3D-优化之二 代码质量
- Code Review&编程习惯&代码质量优化
- 代码质量及其优化(学习笔记)
- 用短路逻辑实现求最大值
- Android使用EventBus框架优化代码逻辑
- 用 FlexPMD 改进代码质量
- C语言逻辑短路
- C语言 逻辑短路
- 关于“短路逻辑”问题
- 啥叫"短路逻辑"
- Java面试题集(第一部分)(1-50)
- HTML==小试牛刀
- [Cordova/Phonegap] 一位程序猿朋友封装的Cordova插件
- BZOJ 1192-鬼谷子的钱袋
- linux部署服务器遇到的问题(一)
- 巧用短路逻辑优化代码质量
- Android蓝牙健康设备开发:Health Device Profile(HDP)
- jq的函数调用!!
- maven resources导致打包失败分析与解决
- 冒泡排序和选择排序,纯JavaScript代码实现,面试必备
- 安装CNTK
- [H.264] 视频压缩原理
- Oracle Scott解锁
- Friend Circles