added a short coding style guide
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
*.~undo-tree~
|
||||
*.dSYM~
|
||||
*#*
|
||||
|
@ -1 +0,0 @@
|
||||
# These are more like guidelines
|
@ -1 +0,0 @@
|
||||
peisongxiao@PeisongXiao.11477
|
39
docs/coding-style.md
Normal file
39
docs/coding-style.md
Normal file
@ -0,0 +1,39 @@
|
||||
# These are more like guidelines
|
||||
|
||||
## Naming schemes
|
||||
- Use reasonable names, especially for class members
|
||||
- Use shortened names for local variables
|
||||
- Use comments to explain if a name doesn't obviously imply what the
|
||||
variable does
|
||||
|
||||
## Constants and types
|
||||
- All constant variables should be in all CAPS
|
||||
- When not needing values to distinguish flags (i.e. the flag is only
|
||||
there to denote a type, its value can be anything), use **enum**.
|
||||
- If a template object is used more than once, it is a good idea to
|
||||
wrap it in a class/struct or use a **typedef**
|
||||
- If the purpose of a class is solely to store data, use a struct.
|
||||
|
||||
## Object design
|
||||
- If an object isn't meant to be inherited, declare it **final**
|
||||
- If a member function has to be implemented individually, declare it
|
||||
as a pure virtual function.
|
||||
|
||||
## Global variables
|
||||
- Avoid using global variables at all costs
|
||||
- Can improve **rng** to be referenced instead of externally exported
|
||||
|
||||
## Functions and local variables
|
||||
- A function should be at most 40 lines unless it's logically simple
|
||||
(e.g. has a long switch statement that calls other functions).
|
||||
*rationale: functions should be short and sweet and let the people
|
||||
reading them know what it does.*
|
||||
- Never have more than 4 local variables in the scope of a function at
|
||||
the same time.
|
||||
*rationale: a normal human's brain can only keep track of a handful
|
||||
of things at once*
|
||||
|
||||
## STL library
|
||||
- Prefer using the STL library over raw data types unless it's a very
|
||||
simple data type
|
||||
- Use unique_ptr<> for heap-allocated objects
|
Reference in New Issue
Block a user