如何让你的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 相关文章推荐
取键盘键位ASCII码的网页
Jul 30 Javascript
JavaScript中的Document文档对象
Jan 16 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
jquery删除ID为sNews的tr元素的内容
Apr 10 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 Javascript
input框中的name和id的区别
Nov 16 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
vue中的provide/inject的学习使用
May 09 Javascript
React styled-components设置组件属性的方法
Aug 07 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格式化日期和时间格式化示例分享
2014/02/24 PHP
php跨站攻击实例分析
2014/10/28 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
js下用gb2312编码解码实现方法
2009/12/31 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
生成二维码方法汇总
2014/12/26 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
python如何通过protobuf实现rpc
2016/03/06 Python
对Python3中的input函数详解
2018/04/22 Python
Pytorch之parameters的使用
2019/12/31 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
毕业生自荐书
2014/02/03 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
意向协议书
2015/01/27 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
个人催款函范文
2015/06/24 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang