航天员|如何编写高质量 JavaScript 代码
文章图片
前段时间有一个叫做“人类高质量男性”的视频火了 , 相信很多同学都刷到过 。 所以今天给大家分享下 , 什么叫做“人类高质量代码” , 哈哈 , 开个玩笑 。
其实分享的都是一些自己平时总结的小技巧 , 算是抛砖引玉吧 , 希望能给大家带来一些启发和帮助 。
如何编写出高质量的 JavaScript 代码?我个人认为 , 如果要编写出高质量的 JavaScript 代码 , 可以从以下三个方面去考虑 。
分别是:易阅读的代码、高性能的代码、健壮性的代码 。 下面我将分别对这三个方面进行阐述 。
易阅读的代码
首先说一下 , 代码是写给自己或团队成员看的 , 良好的阅读方式是编写高质量代码的前提条件 。 这里总结了四点具体操作方式分享给大家 。
【航天员|如何编写高质量 JavaScript 代码】第一点:统一代码格式
不要一会这样写 , 一会那样写 , 尽量统一写法 , 下面举例 。
// badfunction foo(xy) { return { sum : x + y ;function bar(m n){ let ret = m*n return ret;// goodfunction foo(x y) { // 适当的空格隔开 , 一般符号前不添加空格 , 符号后添加空格 return { sum: x + y // 拖尾逗号是合法的 , 简化了对象和数组添加或删除元素 // 省略结束分号 , 当然需要知道如何规避风险function bar(m n) { let ret = m * n return ret
人为去约定代码格式 , 是很不方便的 , 所以可以借助一些工具进行自动格式转换 , 如:prettier 插件(https://prettier.io/) 。
第二点:去除魔术数字
魔术数字(magic number)是程式设计中所谓的直接写在程式码里的具体数值(如“10”“123”等以数字直接写出的值) 。 虽然程式作者写的时候自己能了解数值的意义 , 但对其他程式员而言 , 甚至作者本人经过一段时间后 , 都会很难理解这个数值的用途 。
// badsetTimeout(blastOff 86400000)document.onkeydown = function (ev) { if (ev.keyCode === 13) { // todos // goodconst MILLISECONDS_IN_A_DAY = 86400000const ENTER_KEY = 13setTimeout(blastOff MILLISECONDS_IN_A_DAY)document.onkeydown = function (ev) { if (ev.keyCode === ENTER_KEY) { // todos 预览
当然还有魔术字符串也是像上面一样去处理 , 上面代码中的常量命名推荐采用下划线命名的方式 , 其他如变量、函数等推荐用驼峰进行命名 。
其实减少this的使用频率也是一样的道理 , 当代码中充斥着大量this的时候 , 我们往往很难知道它是谁 , 需要花费很多时间进行阅读 。
// badclass Foo { foo() { this.number = 100 this.el.onclick = function () { this.className = \"active\" // goodclass Foo { foo() { let context = this context.number = 100 context.el.onclick = function () { let el = this el.className = \"active\" 第三点:单一功能原则无论是编写模块、类、还是函数都应该让他们各自都只有单一的功能 , 不要让他们做过多的事情 , 这样阅读起来会非常简单 , 扩展起来也会非常灵活 。
// badfunction copy(obj deep) { if (deep) { // 深拷贝 else { // 浅拷贝 // goodfunction copy(obj) { // 浅拷贝function deepCopy(obj) { // 深拷贝
- 小米科技|不聊性能只谈拍照!新旗舰反向升级成潮流,拍照手机如何选?
- 搜索引擎|淘宝运营系统出台春节打烊功能,淘宝运营商家该如何选择?
- 小米科技|RTX3060的性能到底如何?相比RTX2060提升有多大?
- 市值超 1.7 万亿的Netflix是如何做决策的?
- QQ音乐的2021专辑盘点,是如何征服资深乐迷的
- 饭饭1080°平台分析之生鲜电商平台如何选择ERP系统和SAAS系统
- 在2021大中华区艾菲国际论坛上|玛雅文化施葵:新消费时代,如何助力品牌跑出“破圈”加速度?
- 布局潮范多元化圈层 看MAZDA3昂克赛拉如何玩出花样?
- 原标题:月背工作满三年|月背工作三年 嫦娥四号如何做到超服期役?专家回应
- 36氪|启中教育:如何实现店铺爆发式增长