最近遇到了一些令人糟心的代码,于是决定写篇短文简单记录一下,也希望可以帮助后浪们写出更愉悦的代码
没有太具体的主题,完全是想到哪写到哪
优先使用const
第一要义:变量默认不可变
从 js 的新提案们可以看得出来,近年来 js 正在慢慢学习其他编程语言的优秀特性,可以明显感觉到 js 想填坑,填弱类型的坑,填一些历史上糟糕 api 的坑,比如数组的 splice
方法会导致原数组改变,事实上这非常糟糕,于是有了 toSpliced
等新 api 的提案
变量不可变是副作用管理的一个关键,这直接关乎代码的可读性、可维护性
忘记竞赛式、面试式编程思想
第一要义:可读性优先
这一条对校招生或是初入职场的程序员来说非常重要,请不要再用做算法题的思维模式来写真正的业务代码了,这些算法往往会违反第一条规则,并且可读性会变得很差(当然你可以说你会写注释、写单测,但是这还不够)
举个例子:
很简单的一个功能,实现一个函数 getNameWhenAgeIs
,getNameWhenAgeIs(30) => 'John'
,下面给出了两种实现方式,一种是用 map + filter
,一种是用 reduce
,都能达成目标,那么那种写法更好呢?当然是前者!
有人会说,reduce 的性能明显更好,为什么不用?答案已经写在前面了,我们编写的代码一定是可读性优先。在绝大多数情况下,可读性的重要性远大于算法意义上的性能,尤其是在前端领域,如果你真的苛求性能,那 reduce 也并非最优解,而 reduce 从语义上来说完全不适用于这个场景,即使你写了注释,使用者也会表示困惑。
先学基本功,再学新技术
第一要义:树立正确的编程价值观
前端娱乐圈的新技术层出不穷,每每有新的技术迭代,评论区都是大片的“学不动了”,这时候问自己一句,这个技术真的值得学吗?
举个最简单的例子,react 和 vue,网上有非常非常多的源码解析、实现原理等课程,而随着 react 和 vue 自身的迭代,这些课程也在不断迭代,那么我们需要去学习源码吗,学习源码的目的又是什么呢?
我的答案是:不一定需要。学习 react 源码不能让你写出更好的 react 组件,学习源码真正的用处是让你知道优秀的代码是如何编写的,优秀的项目是如何组织的。(事实上 react 代码因为历史问题真的不够优秀,尤其是项目结构上显得有点混乱)对于新人来说,最先要做好的事情是学会鉴赏代码,能分辨代码的好坏,从各处学习优点,而不是盲目追求技术热点学习新的 api。
优先的编程思维都是想通的,当你养成了优先的习惯,便会发现一切都是那么顺其自然,比如你掌握了函数式编程的思想再去写 react 函数式组件,会感觉就像喝水一样简单,一切 hooks 的设计都是这么顺理成章,因为他本就应该这样设计。
暂时只想到这些,就当随笔记录了,以后可能会再补充吧