如何让你的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 相关文章推荐
js AppendChild与insertBefore用法详细对比
Dec 16 Javascript
javascript实现日期按月份加减
May 15 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
Aug 17 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
Sep 05 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
Jan 19 Javascript
Angular2+如何去除url中的#号详解
Dec 20 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 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 stream_context_create()作用和用法分析
2011/03/29 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
python操作excel让工作自动化
2019/08/09 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
小学运动会入场式解说词
2014/02/18 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
人事部经理岗位职责
2014/03/07 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
开除员工通知
2015/04/22 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python