程序是写给人读的,只是偶尔让计算机执行一下。就执行而言,计算机只关心对错,可是就团队协做而言,风格一致且优雅的代码,会让人看上去赏心悦目(声泪俱下)。所以,肯定编码风格,就尤其重要javascript
本文就javascript而言,对于使用vue等框架,使用Eslint或者团队已经强制推行本身的风格,仅供参考css
4个空格(制表符)html
通常编辑器按下tab时,默认是4个空格。所以,小编推荐4个空格,至少看上去是最舒服的vue
推荐指数: ??java
以;(分号)结尾编程
有赖于分析器的分号自动插入机制,js代码省略分号也是能够正常工做的。就JSLint和JSHint而言,省略空格,都会有警号。还有更麻烦的是,若是js是下面这5个字符之一,js就不会对上一行自动添加分号 ( [ / + -数组
x = y (function () { })()
便会等价于网络
x = y(function () {})()app
推荐指数: ????框架
在编码规范中,空行是最容易忽视的一方面。并且,就编程人员而言,仁者见仁,智者见智。下面,小编就简单阐述一下本身的看法。
何时要有空行?
function getName () { // 代码块 } function getAge () { // 代码块 }
推荐指数: ??
var name = null function getName () { }
推荐指数: ????
/* 取得属性值name */ var name = null /* 取得属性值age */ var age = null
推荐指数: ???
当一行长度受到单行最大字符限制,或者一行过长影响代码阅读时,须要咱们手动拆成多行。此时,咱们须要在运算符换行,运算符写在上一行的末尾。
给变量赋值时,第二行应该与第一行赋值运算符后的变量对齐
var result = name + age + gender + msg + like;
推荐指数: ??
运算符后进行换行,下一行会增长1~2个缩进。小编一般使用1个缩进
if (year == '2019' && month == '8' && day == '23') { // 代码块 }
推荐指数: ??
只要写代码,就在声明变量和函数,或者走在声明变量和函数的路上。所以,变量和和函数声明的可读性就相当重要。
声明变量的长度要尽量短,并抓住要点,且尽量的体现数据类型。对于数组,通常采用 +s 的复数形式
/* 好的作法 */ var count = 1; var name = 'jack' var status = false var names = ['jack', 'john', 'dave'] /* 很差的作法 变量声明向函数,容易产生误解 */ var getCount = 10 var getName = 'jack' var isUse = false
推荐指数: ???
对于函数来讲,第一个单词最好是动词,如get, set, has, is, toggle, can, delete, update, insert, add等,推荐使用驼峰明明法。函数的长度必定要见明知意,哪怕长度稍微长一点,都是值得的
/* 好的作法 */ function getName () { return name } function checkPermissionsBySession () { }
推荐指数: ????
起首的大括号要跟在关键字的后面。由于Javascript会自动添加句末的分号,致使一些难以察觉的错误。为了不这一类错误,须要写成下面这样
/* 好的作法 */ return { name: 'jack' } /* 很差的走法 解析器会解析 return ; 后面的代码就不会执行 */ return { name: 'jack' }
推荐指数: ????
通常来讲: 全部语法元素与左括号之间,都有一个空格。下面这两种状况除外
/* 好的写法 */ if (a === b) {} for (let i=0; i<10; i++) {} return (a + b) function getName(arr) { } getName()
推荐指数: ???
使用null的最好方式方式是看做一个占位符。而不是用null来检测是否传参,或者检测是否变量初始化
/* 好的作法 */ var name = null function getName () { if (!condition) { return null } } /* 很差的作法 */ var name; if (name != null) { } function getName(arg1, arg2) { if (arg3 != null) { } }
推荐指数: ??
没有被初始化的变量都有一个初始值,即undefined
var age; console.log(typeof age) // undefined
推荐指数: ??
js具备强制类型转换的机制,强制类型转换会驱使某些变量自动转换成其余不一样类型。可能会形成意想不到的结果。虽然使用相等,在开发过程当中可能会加快开发速度,可是一旦出现问题,排查起来花费的时间会多得多。所以,小编强烈建议使用全等和不全等
/* 很差的作法 */ console.log(1 == true) // true console.log(0 == '') // true
推荐指数: ???
确保你的函数不会对全局变量有依赖,这将加强您对代码的可测试性。尤为是团队开发,尽量的避免全局变量
(function(){ })();
可能会形成内存消耗多大,甚至内存泄漏等状况
所以,尽量的不要使用全局变量,若是不得不使用,请使用所有的大写字母进行命名。如:
MAX_SIZE // 推荐
推荐指数: ????
松耦合: 当你可以修改一个组件而不须要更改其余的组件。松耦合对于代码维护性相当重要,由于你绝对不但愿开发人员在修改代码时,破坏或者改动其余的代码
/* 好的作法 */ var el = document.getElementById('div1'); el.classList.add('blue') document.body.appendChild(el) /* 很差的作法。没有将css和js进行解藕 */ var el = document.getElementById('div2'); el.style.width = '200px'; el.style.height = '200px' el.style.background = 'blue'; document.body.appendChild(el)
推荐指数: ???
/* 很差的作法。没有实现html和js解藕 */ var ul = document.createElement('ul'); ul.innerHTML = ` <li>li</li> <li>li</li> <li>li</li> ` document.body.appendChild(ul)
推荐指数: ???
对于应用中写死的值,可能会频繁的更改。所以,将配置数据从代码中抽离,保存在config对象中,这样对配置数据的修改能够彻底和使用这些数据的代码隔离开来
URL = 'http://xxxxx/index.html?xxx=123
推荐指数: ????
标准的模块应该是“分工明细,职责单一,不牵扯需求逻辑”。就像是钉子,哪里须要往哪里按。使用模块化和组件化避免了造轮子的重复性工做,且下降了耦合,避免了逻辑错误,使你的代码产生质的飞跃