可读性、性能、Spread、Reduce
在 优雅三连击 中有同学提到了 可读性
这个关键词,就小二个人的观点 在某个范围内使用比较常用到的小技巧,可以提升一定的可读性
,文中提到的短路运算在初始化变量
是提升可读性的,并且在很多提倡优化if 语句
的时候,短路运算符也可以起到对简单条件语句的优雅。
// 优雅前
if (name == '') {
name = 'anonymous'
}
// 优雅后
name = name || 'anonymous'
毕竟可读性能使得代码方便理解
,甚至做到不需要注释
,也包括让人能阅读愉快。但不能滥用
这些方法来把代码全都揉成一团
,这个度怎么把握就是一门学问,很多时候与个人习惯和经验都有一定的关系。
优雅不是一蹴而就,而是在丑化的代码中慢慢优雅。-- 鲁迅
ES6的新语法糖 spread
甜得不得了,但是你知道它并不比Object.assign()
快吗?
const user = { name: 'xiaoer', height: '183' };
// ES6 - spread
const useSpread = { age: 18, ...params };
// Object.assign()
const useAssign = Object.assign({}, { age: 18 }, params);
这两种方法 spread
语法显然更优雅,但是在 性能基准测试 中 Object.assign()
肉眼可见的快了50%-60%。
Array.reduce()
可以和大程度上提升代码的可读性,但是你知道 loop
其实更快嘛?
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// Array.reduce
numbers.reduce((count, i) => count + i, 0);
// loop
function sum(arr) {
let count = 0;
for (let i = 0; i < arr.length; i++) {
count += arr[i]
}
return count;
}
sum(numbers);
很显然 Array.reduce()
的写法更优雅,但是在 性能基准测试 中 for 循环
肉眼可见的快了90%。
上面两个关于优雅的例子性能对比之下,不知道该不该继续使用优雅方法
?是不是自己之前写的代码都糟糕极了
?
其实不必于太过纠结该不该
,新的 ES6 语法糖很大程度上是为了提升开发体验和功能, 并且一些小技巧可以提升可读性和愉悦感,当遇到海量数据需要考虑优化时选择 性能
,当其他较为繁琐的代码选择可读性
,如果你真的很在意这个可以看看这几个建议:
性能
换取可读性
是应该的,毕竟开发和维护在很多时候并不是一个人的事情,而是一整个团队几百号人。可读性
在后续文章或者迭代中补充说明。小二在写文章的时候,就是这样把很多概念
拆开来,使得阅读时只需要聚焦
一个知识点,并通过不断更新
来完善其他知识。相对
的。大量数据
时就需要考虑性能了。有的同学会说项目哪里有这么多数据,还真别说小二做过一个非常蛋疼的项目,后端直接返回几万条数据让前端来处理。别说话吻我,我不想回忆这段过去了。实际情况
进行选择,有些性能问题是可以提前预知
的,一定程度的分析需求可以节省很多代码时间。基准测试
更多操作可以查看 谁敢与我一战 。spread
更多操作可以查看 函数参数骚操作。快速初始化
测试数组可以查看 优雅初始化数组。大量数据优化
可以查看 海量数据切割。在困惑的城市里总少不了并肩同行的
伙伴
让我们一起成长。
点赞
。小星星
。m353839115
。本文原稿来自 PushMeTop