这是我参与「第五届青训营」伴学笔记创作活动的第 3 天
本堂课重点内容
本节课重点讲述了Leftpad事件和JavaScript代码质量优化方法。
Leftpad事件
leftpad(str,len,ch)方法就是用于字符串补位的一个函数,如leftpad('html', 10, 0)得到的结果是‘000000html’。
由于开发者的不满,left-pad工具模块被作者从 npm上撤下,许多直接或者间接依赖这个模块的项目如React、 Babel 都受到波及,无法正常运行。这一事件引起了许多npm关注者和使用者的热烈讨论和思考。
短短十几行代码引发的“血案”,让人们开始思考怎样的代码才算好的代码,写代码时应该关注什么?代码风格、代码效率还是代码的使用场景?月影老师利用当年的leftpad事件,向我们展示了JavaScript代码的逐步优化之路。
JavaScript代码质量优化
案例一:交通灯状态切换
-
版本一:数据抽象
把交通灯的状态给抽象出来,写一个存放状态的状态列表
-
版本二:过程抽象
-
版本三:异步+函数式
案例二:判断一个数是否是四的幂
把数字转换成二进制数,利用四的幂的二进制数末尾为00的特点进行正则判断
案例三:洗牌
- 利用Math.random()会导致小的数字出现频率更高,每个结果出现概率不相等
- 洗牌生成器函数
案例四:分红包
- 写法一:分西瓜(每次分都去拆分大的那部分)
- 写法二:抽牌法(生成器)
利用生成器随机抽出(红包数-1)个值,然后排序,作为红包的分隔符切分
个人总结
从leftpad事件我不仅认识到了对代码进行优化是很重要的事,还意识到我们不能过度依赖第三方库。虽然第三方库很方便易用,但是一旦出了问题就会引起许多连锁反应,导致项目崩溃。通过学习五个案例的解析与各自代码版本的迭代,我明白了代码质量优化的神奇之处,以后的学习中会更加注意这方面的内容。