收藏些JS代码规范
1,前言:
本规范为针对mobile前端javascript的编码规范,其中部分规则只适用用移动端开发,并配合本团队自制的jshint和js-beautify工具进行检查和格式化。
1,变量与声明:
1.1 声明前使用var关键字
bad code
MyGlobalVariable;
good code
var myGlobalVariable;
1.2 变量在函数内部或循环控制条件之前提前声明
bad code
function test(){
for(var i=0;i<list.length;i++){
var item = list[i];
}
}
good code
function test(){
var i;
var item;
var len = list.length;
for(i=0;i<list;i++){
item = list[i];
}
}
1.3 私有变量函数前置 _ 标识
bad code
MyConstructor.prototype.private = function(){};
good code
function _private(){};
MyConstructor.prototype._private = _private;
1.4 变量命名规则 最好是具象的,布尔值需要带 is,has,can, 单位值需要带 _ ms,_s,_px 等
bad code
var height = $("#mydiv").height();
var delay = 3 * 1000;
var readYet = false;
good code
var height_px = $("#mydiv").height();
var delay_ms = 3 * 1000;
var isRead = false;
1.5 构造器首字母大写,方法变量需要遵循驼峰命名规则
bad code
function slidepage(){}
slidepage.prototype.resizepage = function(){};
good code
function SlidePage(){}
SlidePage.prototype.resizePage = function(){};
2,常量:
2.1 常量需要大写
2.2. 常量需要定义在文件头部,并使用 _ 分割
bad code
var maxpeoplesize = 10;
good code
var MAX_PEOPLE_SIZE = 10;
3,分号与逗号:
3.1 赋值,定义,返回值,方法调用后强制需要加分号
3.2 定义变量时,不使用逗号
3.3 objectMap 最后一个属性不带逗号
bad code
var arr = [],str = "",obj = {a:1,b:2,};
good code
var arr = [];
var str = "";
var obj = {a:1,b:2};
4,函数:
4.1 函数内部不允许嵌套函数。
4.2 函数内部不允许使用arguments.callee和arguments.caller
4.3 函数参数不得超过5个 (多于5个使用objectType代替)
bad code
function myTestFunc(a,b,c,d,e,f,g,h){
}
good code
function myTestFunc(params){
var a = params.a;
var b = params.b;
}
5,异常:
5.1 允许使用try/catch
5.2 上线代码不允许使用debugger,console,alert等调试异常的关键字
6,循环:
6.1 循环使用for,不在非必要条件下不使用while
while的可读性不如for
6.2 循环一致使用自增
为了统一性,不允许倒着循环,除非业务需要
6.3 循环内不允许定义函数和变量
循环定义变量,函数消耗过大,尤其函数。
7,控制逻辑:
7.1 控制条件内不要使用var定义变量
7.2 分支超过5种的判断使用switch case,switch case需要带default 7.3 判断条件过长,使用变量标识
bad code
if( flag === 0 || $(".div").length > 0 || $("#id").hasClass("hide")){}
good code
var isRead = (flag === 0);
var hasDiv = $(".div").length > 0;
var isDisplay = $("#id").hasClass("hide");
if(isRead || hasDiv || isDisplay){}
7.4 判断中禁止使用yoda表达式
7.5 判断使用严格类型判断 0,null,undefined ,固定字符 使用 === 8,字符串: 8.1 允许多行字符,使用+或者\ 分割
bad code
var str = "<div><span><a href="#">myhref</a></span></div>";
good code
var str = "<div>"\
<span>\
<a href="#">myhref</a>\
</span>\
</div>";
9,原型:
9.1 禁止对顶级对象进行原型修改
bad code
String.prototype.cutHtml = function(){};
good code
function cutHtml(){};
9.2 原型上不允许保存属性,只能保存方法
因为子类会被互相影响。
10,注释:
10.1 文件开头必须要有文件说明注释,时间,作者
/**
*@author designsor#http://gmail.com
*@date 20150721
*@fileoverview 本文件用于xxx,实现了xxx方法,注意事项xxx
*/
10.2 多行单行注释都被允许
10.3 可以使用jshint注释
/* jshint ignore:start */
不使用jshint检查的部分
/* jshint ignore:end */
// jshint ignore:line
单行忽略注释
11,特性:
11.1 允许使用ES5中所有高级特性(移动端开发)
xiaojue/ES-shim · GitHub 这其中包含了一部分es6的,慎用,但是es5的现在原生移动端都已经支持。
尤其数组,对象,字符串,等便利方法。
11.2 允许使用eval和new Function 但前提是需要明确知道自己在做什么
临时允许使用,但是为了防止xss,用前最好联系一下 xiaojue 或者明确知道自己在做什么。
11.3 不允许使用with
11.4 代码统一遵循 use strict 规范
12,面向对象
12.1 统一使用构造器+原型方法进行面向对象方法开发,不使用拷贝继承
12.2 多级继承,面向对象的高级用法,统一使用公用包中的class方法进行管理和控制
例子等模块化工具开发完成后补齐统一的class类,现在遵循第一条即可。
13,格式化:
13.1 统一使用js-beautify和统一配置文件进行格式化 13.2 使用2个空格缩进 13.3 语法与风格检查使用jshint
14,模块化:
14.1 使用团队 #yuanfeng 的模块化加载工具开发多模块业务(开发中) 或者单独项目使用 litheModule/lithe · GitHub
14.2 一个模块只干一件事 1. Javascript代码应符合jshint检验标准我们正在编写属于自己特殊定制的jshint标准配置,所有通过提交的代码 (非三方包,自身业务逻辑)都需要通过jslint检查。
在sublime下配置:
uipoet/sublime-jshint · GitHub
在vim下配置:
在webstorm下配置:
WebStorm 10.0.0 Help :: Using JavaScript Code Quality Tools
例子:一个第三方插件不想使用jslint检查,跳过检查的方式如下:
在文件头加入
/* jshint ignore:start */
在文件结尾加入
/* jshint ignore:end */
2.Javascript代码 格式化 使用统一格式 js-beautify
所有代码提交之前需要进行格式化,统一使用js-beautify工具和我们统一的标准配置。
在sublime下配置:
enginespot/js-beautify-sublime · GitHub
在vim下配置:
maksimr/vim-jsbeautify · GitHub
在webstorm下配置:
WebStorm 10.0.0 Help :: Code Style. JavaScript
可能需要针对webstorm独立设置配置。
3,jshint和js-beautify的配置下载和如何生效
在项目根目录或者用户根目录放置配置文件:
.jshintrc配置如下:
https://gist.github.com/xiaojue/fbe80093dc8058431568
.jsbeautifyrc配置如下:
网友评论文明上网理性发言已有0人参与
发表评论: