Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JSCS验收详解 #18

Open
miniflycn opened this issue May 18, 2015 · 0 comments
Open

JSCS验收详解 #18

miniflycn opened this issue May 18, 2015 · 0 comments

Comments

@miniflycn
Copy link
Owner

基本约定

  • 使用jscs检查代码风格,并坚持使用固定的代码风格(例如:代码缩进是两个空格)
  • 使用mocha作为单元测试工具,保持单元可用
  • 接入CI系统,每次提交代码都通过CI系统跑测试用例
  • 需要有benchmarks
  • 使用stream管理管道式流程
  • 使用Changelog管理历史版本,并对重要版本打tag

js编码规范

关键字后空格

if, else, for, while, do, switch, return, try, catch 后面必须有空格

Valid
return true;
Invalid
if(x) {
    x++;
}

在代码块前需要空格

Valid
if (cond) {
  foo();
}

for (var e in elements) {
  bar(e);
}

while (cond) {
  foo();
}
Invalid
if (cond){
  foo();
}

for (var e in elements){
  bar(e);
}

while (cond){
  foo();
}

在三目表达式中需要有空格

Valid
var a = b ? c : d;
var a= b ? c : d;
Invalid
var a = b? c : d;
var a = b ?c : d;
var a = b ? c: d;
var a = b ? c :d;

函数表达式前需要空格

Valid
function () {}
function a() {}
Invalid
function() {}
function (){}

单var多声明

Valid
var x = 1
    , y = 2;
Invalid
var x = 1;
var y = 2;

在括号的不加空格

Valid
var x = (1 + 2) * 3;
Invalid
var x = ( 1 + 2 ) * 3;

Object的包裹应当有空格除非是两个{或}

Valid
var x = { a: { b: 1 }};
Invalid
var x = {a: 1};

不允许对象的key有引号括起来

Valid
var x = { a: { default: 1 } };
Invalid

···
var x = {'a': 1};
···

对象的key后面不需要空格

Valid
var x = {a: 1};
Invalid
var x = {a : 1};

操作符不能被换到下一行

?, =, +, -, /, *, ==, ===, !=, !==, >, >=, <, <= 不能被换到下一行。

Valid
x = y ? 1 : 2;
x = y ?
    1 : 2;
Invalid
x = y
    ? 1 : 2;

前缀操作符后不能使用空格

++, --, +, -, ~, ! 前缀操作符后面不能有空格。

Valid
x = !y; y = ++z;
Invalid
x = ! y; y = ++ z;

后缀操作符前不能使用空格

++, -- 后缀操作符前不能使用空格。

Valid
x = y++; y = z--;
Invalid
x = y ++; y = z --;

操作符前后需要空格

=, +, -, /, *, ==, ===, !=, !== 前后都需要空格。

Valid
x !== y;
Invalid
x!== y;
x !==y;

驼峰命名,或大写加下划线命名

Valid
var camelCase = 0;
var CamelCase = 1;
var _camelCase = 2;
var camelCase_ = 3;
var UPPER_CASE = 4;
Invalid
var lower_case = 1;
var Mixed_case = 2;
var mixed_Case = 3;

取出多余的都好,在数组或对象

Valid
var foo = [1, 2, 3];
var bar = {a: "a", b: "b"}
Invalid
var foo = [1, 2, 3, ];
var bar = {a: "a", b: "b", }

else不允许换行

Valid
if (x < 0) {
    x++;
} else {
    x--;
}
Invalid
if (x < 0) {
    x++;
}
else {
    x--;
}

类要首字母大写

Valid
var a = new B();
var c = new this();
Invalid
var d = new e();

行备注前有空格

Valid
// A comment
/*A comment*/
Invalid
//A comment

不允许代码块前回车

Valid
function good() {
    var obj = {
        val: true
    };

    return {
        data: obj
    };
}

if (cond) {
    foo();
}

for (var e in elements) {
    bar(e);
}

while (cond) {
    foo();
}
Invalid
function bad()
{
    var obj =
    {
        val: true
    };

    return {
        data: obj
    };
}

if (cond)
{
    foo();
}

for (var e in elements)
{
    bar(e);
}

while (cond)
{
    foo();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant