---
# System prepended metadata

title: Javascript Style Guide

---

# Javascript Style Guide
Naming convention:
- Lower Camel Case: Variables
- Upper Camel Case: Classes and methods

**Do Not**
- Avoid CSS property definition manipulation within a javascript file; instead define all CSS properties in the stylesheet.
    - Instead use javascript to refer to selectors on a class or ID level.


Function Declarations
- 
Note:
- Cannot recast variables (no loose types)
    - Concatenating strings with non-string variables is fine as long they are being assigned to a string variable
- Functions should follow verb-noun format
- Variable declarations clumped together
- One empty line before ending a code block
    
``` 

class MyClass {
    let someVar;
    let someVar2;
    
    
    // DoFunction() description here
    // param1: description
    // param2: description
    // return: description
    
    DoFunction : function( param1, param2 ) {
        let myVar;
        let myVar1;
        let myVar2;
        
        // logic
       
    }
        
}
    
```

<br/>

If Statements
-
```

    if( condition ) {
        // code
    }
    else if( condition ) {
        // other code
    }
    
```

Inline-If Statements
-
```
    var ? ifTrue : else;
```

Do-While Statements
-
```
    do {
    
    } while( condition );

```

Enhanced For Loops
-
Note:
- The preferred option to iterate through a collection or object
```
    for ( let item of list ) {
        // iterate with item
    }
    
    for ( let property in object ) {
        // iterate over object properties
    }
```

For Loops
-
Note:
- Use when you specifically need to index in a for loop
```
    for ( let index = 0; index < list.length; index++ ) {
        // iterate through index
    }
```

Nested Loops
-
Note:
- Nested loops should be the same loop type


# Header
Classes should have a header with the name of person who created the class and a description of what the class does
```
/////////////////////////////////////////////////////
//
//  Name: Some Class
//  Author: Some Author
//  Description: some Description
//
///////////////////////////////////////////////////

```