Coding Convetions (WIP)
==================================

### Files:
Start filenames with lower case \
Use underline for multi word filenames  \
`header_file.hpp` \
`source_file.cpp`
### Header:
At the beginn of a header use:
```c++
#pragma once
```

### Function Names:
```c++
// Prefix arguments with 'a', variable name in camel case
void function(int aFoo);
// use camel case for mulit-word names
void functionNamingIsEasy();
```

### Variable Names:
```c++
// variables start with lower case
int x;
// const
const int cValue = 2;
constexpr int cValue = 2;
// sruct
struct Entity;
// old enums, think about scope
enum Fruit {FRUIT_APPLE, FRUIT_ORANGE};
// preferred enums
enum class Fruit {APPLE, ORANGE};
```

### Class Names:
```c++
namespace namespace_name_lower_case_separated_by_underscores
{ // Braces for namespaces, types, methods start in the next line

    class ClassName
    { 
    public:
        void methodName() const {
            int localVariablesInCamelCase = 0; 
        }
    protected:
        // The more public it is, the more important it is. Therefore,
        // order like follows: public on top, then protected, then private
        // within, functions first then variables

        template <typename Template, typename Parameters>
        void templatedMethod() {
            // Template type parameters are named in camel case,
            // starting with a capital letter.
        }
        // getter/setter
        void size() { return mSize; };
        void size(int aSize) { mSize = aSize; };
    private:
        // Prefix members with 'm', variable name in camel case
        ComplexType mValue;
        int mSize;
    };
}
// New line at the end of the file:

```