116 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						||
title: Free Code Camp JavaScript Style Guide
 | 
						||
---
 | 
						||
<small>or How Cool People Write JavaScript.</small>
 | 
						||
 | 
						||
## Indent
 | 
						||
 | 
						||
Always Use Two Spaces  
 | 
						||
No hard tabs, ever. No really, just don't do it.
 | 
						||
 | 
						||
## Curly Braces
 | 
						||
 | 
						||
Always use curly braces when using the keywords `if/else/else if`. This prevents a lot of ambiguity and will prevent syntax errors in some edge cases.
 | 
						||
 | 
						||
Bad:
 | 
						||
 | 
						||
    if (foo) bar();
 | 
						||
 | 
						||
Good:
 | 
						||
 | 
						||
    if (foo) { bar(); }
 | 
						||
 | 
						||
## Curly Braces Everywhere!
 | 
						||
 | 
						||
Space After `function` Keyword, Except in Anonymous Functions
 | 
						||
 | 
						||
Good:
 | 
						||
 | 
						||
    function foo() {
 | 
						||
    }
 | 
						||
 | 
						||
    var foo = function() {
 | 
						||
      // ...
 | 
						||
    };
 | 
						||
 | 
						||
Bad:
 | 
						||
 | 
						||
    function foo ()
 | 
						||
    {
 | 
						||
      // ...
 | 
						||
    }
 | 
						||
 | 
						||
    var foo = function () {
 | 
						||
      // ...
 | 
						||
    };
 | 
						||
 | 
						||
## Comments
 | 
						||
 | 
						||
*   no inline comments
 | 
						||
*   single space after `//`
 | 
						||
*   Do not use multiline comment `/* */`, we are reserving these for use with jsDocs.
 | 
						||
 | 
						||
## Keywords
 | 
						||
 | 
						||
*   space immediately after if, else, while, etc
 | 
						||
*   opening curly brace should always be on the same line.
 | 
						||
 | 
						||
Good:
 | 
						||
 | 
						||
    if (true) {
 | 
						||
     // do the thing
 | 
						||
    }
 | 
						||
 | 
						||
Bad:
 | 
						||
 | 
						||
    if(true)
 | 
						||
    {
 | 
						||
     // do the thing
 | 
						||
    }
 | 
						||
 | 
						||
## Else
 | 
						||
 | 
						||
Avoid else and "end early". In JavaScript there is often a lot of indenting (usually when dealing with async code and named "callback hell"). Anything you can do reduce the number of indents should be done. One thing is to <a href='http://blog.timoxley.com/post/47041269194/avoid-else-return-early' target='_blank' rel='nofollow'>avoid the else</a> keyword.
 | 
						||
 | 
						||
This also has the side effect of making code cleaner and easier to read.
 | 
						||
 | 
						||
Bad:
 | 
						||
 | 
						||
    someAsynFunc(function(err, data) {
 | 
						||
      if (err) {
 | 
						||
        callback(err);
 | 
						||
      } else {
 | 
						||
        // do stuff with data
 | 
						||
      }
 | 
						||
    });
 | 
						||
 | 
						||
Good:
 | 
						||
 | 
						||
    someAsynFunc(function(err, data) {
 | 
						||
      if (err) {
 | 
						||
        return callback(err);
 | 
						||
      }
 | 
						||
      // do stuff with data
 | 
						||
      // saves one indent
 | 
						||
    });
 | 
						||
 | 
						||
## Long Strings
 | 
						||
 | 
						||
Long multiline strings should be in one of two forms:
 | 
						||
 | 
						||
    var longString =
 | 
						||
      ‘long strings should ‘ +
 | 
						||
      ‘be in this form, with the ‘ +
 | 
						||
      ‘operator ending the line’;
 | 
						||
 | 
						||
    var foo = 'bar';
 | 
						||
 | 
						||
    var longString = [
 | 
						||
      'long strings with variables such as ',
 | 
						||
      foo,
 | 
						||
      'should ',
 | 
						||
      'be in this form, an array of strings ',
 | 
						||
      'that are joined with the join array instance method',
 | 
						||
    ].join('');
 | 
						||
 | 
						||
...more to come |