编程风格规范(js)

136 阅读3分钟

编程风格规范(JavaScript)

基本规则

1.类名驼峰原则 (第一个word首字母大写): UserManagerServiceImpl

2.方法驼峰原则 (第一个word首字母小写):addUserInfo

3.常量名全部大写 单词之间用_隔开

4.杜绝 完全不规范的缩写 例如 Contribution 缩写成Cont

5.尽可能使用完整的单词来表达其意,保证代码的可阅读性

6.class、id都需要小写

7.命名使用英文,尽量不使用特殊字符

8.使用class定义样式而不是使用id,防止因id变化引起的页面布局错乱

9.一些语义化命名例子

 .wrap{}                 //外层容器
 .mod-box{}              //模块容器
 .btn-start{}            //开始
 .btn-download-ios{}     //ios下载
 .btn-download-andriod{} //安卓下载
 .btn-head-nav1{}        //头部导航链接1
 .btn-news-more{}        //更多新闻
 .btn-play{}             //播放视频
 .btn-ico{}              //按钮ico
 .btn-lottery{}          //开始抽奖
 .side-nav{}             //侧栏导航
 .side-nav-btn1{}        //侧栏导航-链接1 
 .btn-more{}             //更多

扩展规则

1.用let取代var

2.全局常量建议使用const

3.静态字符串一律使用单引号(' ')或反引号(``),不使用双引号("")。动态字符串使用反引号。

4.使用数组成员对变量赋值时,优先使用解构赋值。

5.函数的参数如果是对象的成员,优先使用解构赋值。

6.单行定义的对象,最后一个成员不以逗号结尾。多行定义的对象,最后一个成员以逗号结尾。

// 坏
const a = { k1: v1, k2: v2, };
const b = {
  k1: v1,
  k2: v2
};
// 好
const a = { k1: v1, k2: v2 };
const b = {
  k1: v1,
  k2: v2,
};

7.对象尽量静态化,一旦定义,就不得随意添加新的属性。如果添加属性不可避免,要使用Object.assign方法。

8.如果对象的属性名是动态的,可以在创造对象的时候,使用属性表达式定义。

9.使用扩展运算符(...)拷贝数组

10.使用 Array.from 方法,将类似数组的对象转为数组。

11.立即执行的函数可以写成箭头函数的形式

12.使用匿名函数当作参数的场合,尽量用箭头函数代替。

13.简单的、单行的、不会复用的函数,建议采用箭头函数。如果函数体较为复杂,行数较多,还是应该采用传统的函数写法。

14.所有配置项都应该集中在一个对象,放在最后一个参数,布尔值不可以直接作为参数。

15.不要在函数体内使用 arguments 变量,使用 rest 运算符(...)代替

// 坏
function concatenateAll() {
  const args = Array.prototype.slice.call(arguments);
  return args.join('');
}

// 好
function concatenateAll(...args) {
  return args.join('');
}

16.使用默认值语法设置函数参数的默认值。

17.注意区分 Object 和 Map,只有模拟现实世界的实体对象时,才使用 Object。如果只是需要key: value的数据结构,使用 Map 结构。

18.尽量用 Class,取代需要 prototype 的操作。

// 坏
function Queue(contents = []) {
  this._queue = [...contents];
}
Queue.prototype.pop = function() {
  const value = this._queue[0];
  this._queue.splice(0, 1);
  return value;
}

// 好
class Queue {
  constructor(contents = []) {
    this._queue = [...contents];
  }
  pop() {
    const value = this._queue[0];
    this._queue.splice(0, 1);
    return value;
  }
}

使用ESLint

用eslint来规范代码