如何让你的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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
JavaScript 格式字符串的应用
Mar 29 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
get(0).tagName获得作用标签示例代码
Oct 08 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
快速解决js开发下拉框中blur与click冲突
Oct 10 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
zTree异步加载展开第一级节点的实现方法
Sep 05 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
Nov 20 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
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的特殊设置
2006/10/09 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
用客户端js实现带省略号的分页
2013/04/27 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
js实现鼠标拖曳效果
2020/12/30 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python端口扫描简单程序
2016/11/10 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
shell程序中如何注释
2012/02/17 面试题
学校领导班子群众路线整改措施
2014/09/16 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
高三教师工作总结2015
2015/07/21 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python