-
-
Notifications
You must be signed in to change notification settings - Fork 35.4k
Mr.doob's Code Style™
gero3 edited this page Jul 6, 2014
·
25 revisions
- Code should be in UTF-8.
- a new line should be LF.
- Indentation should be tabs.
- No extra spaces at the end of lines (set up your text editor, so that it removes extra spaces when saving).
Naming should be as descriptive as possible. The only exception is the indexing variable in an loop. That can be shortened to a single letter starting from i.
- variableNamesLikeThis
- functionNamesLikeThis
- ClassNamesLikeThis
- methodNamesLikeThis
- ConstantsLikeThis Private properties and methods of objects begin with an underscore _.
- Object should always be created by
{}
and notnew Object()
. - When creating an empty Object, use
{}
without spaces. - When creating an Object with keys,
- There should be a single space after the opening bracket.
- There should be a single space before the closing bracket.
- Keys should be written without quotes. The exception is when it is nessecary.
- There should be a space between the key word and the colon.
- There should be a space between the colon and the value.
- The comma should have no space before and 1 space behind itself.
- The last value shouldn't be trailed with a comma.
- The comma shouldn't start a new line. It should always trail the previous value.
good:
var obj = { A : 1, b : 2, C : 3 };
var obj = { A : 1,
b : 2,
C : 3
};
poor:
var obj = {A : 1, b : 2, C : 3};
var obj = { "A" : 1, "b" : 2, "C" : 3 };
var obj = { A: 1, b: 2, C: 3 };
var obj = { A :1, b :2, C :3 };
var obj = { A : 1 , b : 2 , C : 3 };
var obj = { A : 1,
b : 2,
C : 3,
};
var obj = { A : 1
, b : 2
, C : 3
};
- Arrays should always be created by
[]
and notnew Array()
. - When creating an empty Array, use
[]
without spaces. - When creating an Array with values,
- There should be a single space after the opening bracket.
- There should be a single space before the closing bracket.
- The comma should have no space before and 1 space behind itself.
- The last value shouldn't be trailed with a comma.
- The comma shouldn't start a new line. It should always trail the previous value.
good:
var arr = [ 1, 2, 3 ];
var arr = [ 1,
2,
3
];
poor:
var arr = [1, 2, 3];
var arr = [ 1 , 2 , 3 ];
var arr = [ 1,
2,
3,
];
var arr = [ 1
, 2
, 3
];
Strings are written using single quotes or double quotes:
good:
var lyrics = 'Never gonna Give you up, Never gonna Let you down' ;
var lyrics = "Never gonna Give you up, Never gonna Let you down" ;
Semicolon are always placed.
- The opening brackets should be followed by 1 new line.
- The closing brackets should be behind 1 new line.
- The opening brackets should always follow a space and not start at a new line
good:
if ( a === 0 ) {
//this is good
return true;
}
poor:
if ( a === 0 ) {
//this is good
return true;
}
if ( a === 0 ) {
//this is good
return true;
}
if ( a === 0 ) { //this is good
return true;
}
if ( a === 0 ){
//this is good
return true;
}
- The if keyword should always be followed with a space, an opening parenthesis and another space.
- The test should end with a space, an closing parenthesis and another space.
- The if statement should always contain a block.
- If there is an else statement, it should be on the same line as the closing bracket of the block.
- The else statement is followed by another block and should be seperated from both blocks with a single space on both sides.
- Assignment in a test is not use.
good:
if ( test ) {
/ / ...
} else {
/ / ...
}
poor:
if( test ) {
/ / ...
}
if (test ) {
/ / ...
}
if ( test) {
/ / ...
}
if ( test ){
/ / ...
}
if ( test ) {
/ / ...
}else {
/ / ...
}
if ( test ) {
/ / ...
} else{
/ / ...
}
- The switch keyword should always be followed with a space, an opening parenthesis and another space.
- The test value should end with a space, an closing parenthesis and another space.
- Every case should have a break statement, except for the default case or when returning a value.
- Every case should have a space between the colon and the test.
- Before and after each case, there should be a new line.
- Assignment in a test is not use.
good:
Switch ( value ) {
Case 1 :
/ / ...
Break ;
case 2 :
/ / ...
Break ;
Default :
/ / ...
/ / no Break Keyword on the Last Case
}
- Don't use foreach loops.
- Don't use for in loops on arrays.
- The for keyword should always be followed with a space, an opening parenthesis and another space.
- The assignment part should start with a space.
- The assignment part should end with a semicolon and a space.
- The test part should start with a space.
- The test part should end with a semicolon and a space.
- The update part should start with a space.
- The update part should end with a space, a closing parenthesis and another space
Operator with
not used.
Always use strict equality ===
(inequality !==
).
Always use spaces around the colon and question mark.
All unary operators are written together with the following operands:
var foo = ! bar ;
Avoid using eval . To parse json using JSON.parse .
Check the value through a strict comparison.
Good:
x === undefined ;
Poor:
/ / In modern browsers already defined immutable undefined.
var undefined ;
x === undefined ;
typeof x === 'undefined'
x === void 0