推荐编码规范
下面是 Cocos Creator 开发团队使用的编码规范,收录在手册里以供游戏开发者和工具开发者参考。
命名规范
当我们为变量, 函数和实例命名时, 使用 camelCase 命名法.
// bad
var FOOBar = {};
var foo_bar = {};
function FOOBar () {}
// good
var fooBar = {};
function fooBar () {}
当我们为类或者模块命名时, 使用 PascalCase 命名法.
// bad
var foobar = cc.Class({
foo: 'foo',
bar: 'bar',
});
var foobar = require('foo-bar');
// good
var FooBar = cc.Class({
foo: 'foo',
bar: 'bar',
});
var FooBar = require('foo-bar');
使用前置下划线
_
当我们为私有属性命名// bad
this.__firstName__ = 'foobar';
this.firstName_ = 'foobar';
// good
this._firstName = 'foobar';
文件名我们采用 dash 命名法
// bad
fooBar.js
FooBar.js
// good
foo-bar.js
语法规范
使用
{}
创建一个 object// bad
var obj = new Object();
// good
var obj = {};
使用
[]
创建一个 array// bad
var array = new Array();
// good
var array = [];
尽可能在 js 代码中使用单引号
''
来定义 string// bad
var str = "Hello World";
// good
var str = 'Hello World';
多行 string 定义时, 尽可能使用
+
定义// bad
const errorMessage = 'This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.';
// bad
const errorMessage = 'This is a super long error that was thrown because \
of Batman. When you stop to think about how Batman had anything to do \
with this, you would get nowhere \
fast.';
// good
const errorMessage = 'This is a super long error that was thrown because ' +
'of Batman. When you stop to think about how Batman had anything to do ' +
'with this, you would get nowhere fast.';
使用
===
和!==
而不是==
和!=
.
书写规范
根据个人习惯, 和原代码作者格式, 选择 4 个空格或者 2 个空格作为缩进
// bad
function() {
∙var name;
}
// very bad
function() {
∙∙<tab>∙∙var name;
}
// good
function() {
∙∙var name;
}
// good
function() {
∙∙∙∙var name;
}
尽可能将
{
和表达式放在同一行// bad
if ( isFoobar )
{
}
// good
if ( isFoobar ) {
}
// bad
function foobar()
{
}
// good
function foobar() {
}
// bad
var obj =
{
foo: 'foo',
bar: 'bar',
}
// good
var obj = {
foo: 'foo',
bar: 'bar',
}
在
{
前请空一格// bad
function test(){
console.log('test');
}
// good
function test() {
console.log('test');
}
// bad
dog.set('attr',{
age: '1 year',
breed: 'Bernese Mountain Dog',
});
// good
dog.set('attr', {
age: '1 year',
breed: 'Bernese Mountain Dog',
});
在逻辑状态表达式 (
if
,while
) 的(
前请空一格// bad
if(isJedi) {
fight ();
}
// good
if (isJedi) {
fight();
}
operator 之间请空一格
// bad
var x=y+5;
// good
var x = y + 5;
在 Block 定义之间请空一行
// bad
if (foo) {
return bar;
}
return baz;
// good
if (foo) {
return bar;
}
return baz;
// bad
const obj = {
foo() {
},
bar() {
},
};
return obj;
// good
const obj = {
foo() {
},
bar() {
},
};
return obj;
// bad
const arr = [
function foo() {
},
function bar() {
},
];
return arr;
// good
const arr = [
function foo() {
},
function bar() {
},
];
return arr;
不要使用前置逗号定义
// bad
var story = [
once
, upon
, aTime
];
// good
var story = [
once,
upon,
aTime,
];
// bad
var hero = {
firstName: 'Ada'
, lastName: 'Lovelace'
, birthYear: 1815
, superPower: 'computers'
};
// good
var hero = {
firstName: 'Ada',
lastName: 'Lovelace',
birthYear: 1815,
superPower: 'computers',
};