如何让你的JS代码更好看易读


Posted in Javascript onDecember 01, 2017

作为JS程序员,自己写的代码如果好看易读,不只是自己看起来好看,在别的程序员接手以后,也会是交接工作异常顺利。

不要在代码中留大段注释掉的代码

留给git去管理,不然你要git干嘛

// bad

// function add() {
// const a = b + c
// return a
// }

function add() {
 return a + 1000
}

// good
function add() {
 return a + 1000
}

适当地换行

// bad
function a() {
 const {
 state_a,
 state_b,
 state_c
 } = this.state
 this.setState({state_a: state_a * 2})
 return 'done'
}

// good
function a() {
 const {
 state_a,
 state_b,
 state_c
 } = this.state

 this.setState({state_a: state_a * 2})

 return 'done'
}

适当的添加注释,但不要疯狂的添加注释

对一段代码或者一行特别需要注意的代码注释

不要疯狂的注释,太??拢??恋拇?胱约夯崴祷?/p>

// bad
const a = 'a' // 这是a
const b = 'b' // 这是b
const c = 'c' // 这是c

// good
/**
 * 申明变量
 */
 const a = 'a'
 const b = 'b'
 const c = 'c'

将类似行为、命名的代码归类在一起

// bad
function handleClick(arr) {
 const a = 1

 arr.map(e => e + a)

 const b = 2

 return arr.length + b
}

// good
function handleClick(arr) {
 const a = 1
 const b = 2

 arr.map(e => e + a)

 return arr.length + b
}

在不破坏语义性的情况下,'能省则省'

牢记js中函数是一等公民

但是,如果省略到影响可读性了,就是失败的

在可读性和简洁性至今必须选一个的话,永远先选可读性

function add(a) {
 return a + 1
}

function doSomething() {

}

// bad
arr.map(a => {
 return add(a)
})

setTimeout(() => {
 doSomething()
}, 1000)

// good
arr.map(add)

setTimeout(doSomething, 1000)

箭头函数

// bad
const a = (v) => {
 return v + 1
}

// good
const a = v => v + 1


// bad
const b = (v, i) => {
 return {
 v,
 i
 }
}

// good
const b = (v, i) => ({v, i})


// bad
const c = () => {
 return (dispatch) => {
 // doSomething
 }
}

// good
const c = () => dispatch => {
 // doSomething
}

提前对对象取值(写react的同学一定懂)

// bad
const a = this.props.prop_a + this.props.prop_b

this.props.fun()

// good
const {
 prop_a,
 prop_b,
 fun
} = this.props

const a = prop_a + prop_b

fun()

合理使用各种表达式

// bad
if (cb) {
 cb()
}

// good
cb && cb()


// bad
if (a) {
 return b
} else {
 return c
}

// good
return a ? b : c


// bad
if (a) {
 c = a
} else {
 c = 'default'
}

// good
c = a || 'default'

链式调用写法

// bad
fetch(url).then(res => {
 return res.json()
}).then(() => {
 // doSomething
}).catch(e => {

})

// good
fetch(url)
 .then(res => {
 return res.json()
 })
 .then(() => {
 // doSomething
 })
 .catch(e => {

 })

保持代码是纵向发展的

发现那些在整个文件中特别'突出'的代码时,应该考虑对他们做换行处理了

// bad
return handleClick(type, key, ref, self, source, props)

// good
return handleClick(
 type,
 key,
 ref,
 self,
 source,
 props
)

// bad
const a = this.props.prop_a === 'hello' ? <di>world</div> : null

// good
const a = this.props.prop_a === 'hello'
 ? <di>world</div>
 : null
Javascript 相关文章推荐
JSON 学习之完全手册 图文
May 29 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
Javascript delete 引用类型对象
Nov 01 Javascript
ExtJS4中使用mixins实现多继承示例
Dec 03 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
详解JavaScript中shift()方法的使用
Jun 09 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 Javascript
Bootstrap源码学习笔记之bootstrap进度条
Dec 24 Javascript
JS canvas绘制五子棋的棋盘
May 28 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
Apr 20 Javascript
Js类的构建与继承案例详解
Sep 15 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 #Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 #Javascript
利用JS测试目标网站的打开响应速度
Dec 01 #Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 #Javascript
javascript按顺序加载运行js方法
Dec 01 #Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
Dec 01 #Javascript
javascript Function函数理解与实战
Dec 01 #Javascript
You might like
php&amp;java(三)
2006/10/09 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
Smarty模板语法详解
2019/07/20 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
python中的全局变量用法分析
2015/06/09 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
pygame实现打字游戏
2021/02/19 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
python中format函数如何使用
2020/06/22 Python
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
教育专业个人求职信
2013/12/02 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
厂区绿化方案
2014/05/08 职场文书
六一亲子活动感想
2015/08/07 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书