JavaScript代码基础规范
2018-02-05 21:02
399 查看
本文参考自:https://github.com/fex-team/styleguide/blob/master/javascript.md
[强制] switch 下的 case 和 default 必须增加一个缩进层级。
示例:
[强制] 用作代码块起始的左花括号 { 前必须有一个空格。
[强制] if / else / for / while / function / switch / do / try / catch / finally 关键字后,必须有一个空格。
[强制] 在对象创建时,属性中的 : 之后必须有空格,: 之前不允许有空格。
[强制] 函数声明、具名函数表达式、函数调用中,函数名和 ( 之间不允许有空格。
[强制] , 和 ; 前不允许有空格。
[强制] 在函数调用、函数声明、括号表达式、属性访问、if / for / while / switch / catch 等语句中,() 和 [] 内紧贴括号部分不允许有空格。
[强制] 单行声明的数组与对象,如果包含元素,{} 和 [] 内紧贴括号部分不允许包含空格。
[强制] 行尾不得有多余的空格。
[强制] 每行不得超过 120 个字符。
解释:
超长的不可分割的代码允许例外,比如复杂的正则表达式。长字符串不在例外之列。
[强制] 运算符处换行时,运算符必须在新行的行首。
[建议] 不同行为或逻辑的语句集,使用空行隔开,更易阅读。
[建议] 对于 if…else…、try…catch…finally 等语句,推荐使用在 } 号后添加一个换行 的风格,使代码层次结构更清晰,阅读性更好。
[强制] 函数定义结束不允许添加分号。
[强制] 常量 使用 全部字母大写,单词间下划线分隔 的命名方式。
[强制] 函数 使用 Camel命名法。
[强制] 函数的 参数 使用 Camel命名法。
[强制] 类 使用 Pascal命名法。
[强制] 类的 方法 / 属性 使用 Camel命名法。
[强制] 类名 使用 名词。
[建议] 函数名 使用 动宾短语。
[建议] boolean 类型的变量使用 is 或 has 开头。
1 结构
1.1 缩进
[强制] 使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符。[强制] switch 下的 case 和 default 必须增加一个缩进层级。
示例:
// good switch (variable) { case '1': // do... break; case '2': // do... break; default: // do... } // bad switch (variable) { case '1': // do... break; case '2': // do... break; default: // do... }
1.2 空格
[强制] 二元运算符两侧必须有一个空格,一元运算符与操作对象之间不允许有空格。var a = !arr.length; a++; a = b + c;
[强制] 用作代码块起始的左花括号 { 前必须有一个空格。
// good if (condition) { } while (condition) { } function funcName() { } // bad if (condition){ } while (condition){ } function funcName(){ }
[强制] if / else / for / while / function / switch / do / try / catch / finally 关键字后,必须有一个空格。
// good if (condition) { } while (condition) { } (function () { })(); // bad if(condition) { } while(condition) { } (function() { })();
[强制] 在对象创建时,属性中的 : 之后必须有空格,: 之前不允许有空格。
// good var obj = { a: 1, b: 2, c: 3 }; // bad var obj = { a : 1, b:2, c :3 };
[强制] 函数声明、具名函数表达式、函数调用中,函数名和 ( 之间不允许有空格。
// good function funcName() { } var funcName = function funcName() { }; funcName(); // bad function funcName () { } var funcName = function funcName () { }; funcName ();
[强制] , 和 ; 前不允许有空格。
// good callFunc(a, b); // bad callFunc(a , b) ;
[强制] 在函数调用、函数声明、括号表达式、属性访问、if / for / while / switch / catch 等语句中,() 和 [] 内紧贴括号部分不允许有空格。
// good callFunc(param1, param2, param3); save(this.list[this.indexes[i]]); needIncream && (variable += increament); if (num > list.length) { } while (len--) { } // bad callFunc( param1, param2, param3 ); save( this.list[ this.indexes[ i ] ] ); needIncreament && ( variable += increament ); if ( num > list.length ) { } while ( len-- ) { }
[强制] 单行声明的数组与对象,如果包含元素,{} 和 [] 内紧贴括号部分不允许包含空格。
// good var arr1 = []; var arr2 = [1, 2, 3]; var obj1 = {}; var obj2 = {name: 'obj'}; var obj3 = { name: 'obj', age: 20, sex: 1 }; // bad var arr1 = [ ]; var arr2 = [ 1, 2, 3 ]; var obj1 = { }; var obj2 = { name: 'obj' }; var obj3 = {name: 'obj', age: 20, sex: 1};
[强制] 行尾不得有多余的空格。
1.3 换行
[强制] 每个独立语句结束后必须换行。[强制] 每行不得超过 120 个字符。
解释:
超长的不可分割的代码允许例外,比如复杂的正则表达式。长字符串不在例外之列。
[强制] 运算符处换行时,运算符必须在新行的行首。
// good if (user.isAuthenticated() && user.isInRole('admin') && user.hasAuthority('add-admin') || user.hasAuthority('delete-admin') ) { // Code } var result = number1 + number2 + number3 + number4 + number5; // bad if (user.isAuthenticated() && user.isInRole('admin') && user.hasAuthority('add-admin') || user.hasAuthority('delete-admin')) { // Code } var result = number1 + number2 + number3 + number4 + number5;
[建议] 不同行为或逻辑的语句集,使用空行隔开,更易阅读。
// 仅为按逻辑换行的示例,不代表setStyle的最优实现 function setStyle(element, property, value) { if (element == null) { return; } element.style[property] = value; }
[建议] 对于 if…else…、try…catch…finally 等语句,推荐使用在 } 号后添加一个换行 的风格,使代码层次结构更清晰,阅读性更好。
if (condition) { // some statements; } else { // some statements; } try { // some statements; } catch (ex) { // some statements; }
语句
[强制] 在 if / else / for / do / while 语句中,即使只有一行,也不得省略块 {…}。// good if (condition) { callFunc(); } // bad if (condition) callFunc(); if (condition) callFunc();
[强制] 函数定义结束不允许添加分号。
// good function funcName() { } // bad function funcName() { }; // 如果是函数表达式,分号是不允许省略的。 var funcName = function () { };
1.4 命名
[强制] 变量 使用 Camel命名法。var loadingModules = {};
[强制] 常量 使用 全部字母大写,单词间下划线分隔 的命名方式。
var HTML_ENTITY = {};
[强制] 函数 使用 Camel命名法。
function stringFormat(source) { }
[强制] 函数的 参数 使用 Camel命名法。
function hear(theBells) { }
[强制] 类 使用 Pascal命名法。
function TextNode(options) { }
[强制] 类的 方法 / 属性 使用 Camel命名法。
function TextNode(value, engine) { this.value = value; this.engine = engine; } TextNode.prototype.clone = function () { return this; };
[强制] 类名 使用 名词。
function Engine(options) { }
[建议] 函数名 使用 动宾短语。
function getStyle(element) { }
[建议] boolean 类型的变量使用 is 或 has 开头。
var isReady = false; var hasMoreCommands = false;
相关文章推荐
- javascript基础修炼(4)——UMD规范的代码推演
- JavaScript_代码规范
- JavaScript-总结常用代码书写规范
- JavaScript代码规范和性能整理
- oc 基础入门之手动内存管理代码规范
- 豆瓣Javascript代码风格规范
- JavaScript基础----42JavaScript惰性函数(没写代码)
- 程序员必须知道的10大基础实用算法及其讲解(Javascript代码实现)
- Java基础学习总结(93)——Java编码规范之代码性能及惯例
- javascript基础代码
- javascript代码规范
- JavaScript的代码编写格式规范指南
- Javascript代码书写规范
- Javascript 优化项目代码技巧之语言基础(二)
- C# 培训之零基础入门 08:代码规范
- Java基础学习总结(93)——Java编码规范之代码性能及惯例
- JavaScript Style Rules 代码风格 编码规范
- c#基础精华01(强调代码规范,虚方法,抽象方法,接口)
- 前端代码基础规范