aboutsummaryrefslogtreecommitdiff
path: root/docs/styleguide-cpp.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/styleguide-cpp.md')
-rw-r--r--docs/styleguide-cpp.md58
1 files changed, 58 insertions, 0 deletions
diff --git a/docs/styleguide-cpp.md b/docs/styleguide-cpp.md
new file mode 100644
index 0000000..ad1add6
--- /dev/null
+++ b/docs/styleguide-cpp.md
@@ -0,0 +1,58 @@
+# OpenVic2 C++ Style Guidelines
+
+## Table of Contents
+ 1. [Why Style?](styleguide-cpp.md#why-style)
+
+ 1.1. [General Principles](styleguide-cpp.md#general-principles)
+
+ 1.2 [File Formatting](styleguide-cpp.md#file-formatting)
+
+ 2. [Conventions](styleguide-cpp.md#conventions)
+
+ 2.1. [Naming Conventions](styleguide-cpp.md#-naming-conventions)
+
+## 1. Why Style?
+You may be wondering ”Why do we need a style guide?” ”Are you trying to give me homework?”
+### 1.1. General Principles
+
+ - Prefer clarity over brevity
+ - Don’t optimize prematurely
+ - Avoid C-style casts
+
+### 1.2. File Formatting
+Source code files should adhere to the following:
+
+ - Encoded in UTF-8
+ - Use tabs for indentation
+ - Use LF for end-of-line sequences
+ - Not have any trailing whitespace (Lines which end in spaces or tabs
+ - Any #include directives should be at the top of the file
+
+## 2. Conventions
+### 2.1 Naming Conventions
+| Item | Writing Convention | Example |
+|--|--|--|
+| Class and Struct Names | Pascal Case | MyCoolExample |
+| Variables and Function Names | Camel Case | myCoolExample |
+| Constants, Enum Values and Preprocessor | Macro Case | MY_COOL_EXAMPLE |
+| Type aliases | Snake Case | my_cool_example_t |
+
+```c++
+# pragma once
+# include < stdio .h>
+# include < iostream >
+// A comment
+constexpr size_t UNIQUE_RGB_COLOURS = 256 * 256 * 256;
+
+struct RGBColour {
+ unsigned char r ;
+ unsigned char g ;
+ unsigned char b ;
+};
+
+bool isColourGreyscale ( RGBColour c );
+
+class Something {
+
+};
+``` \ No newline at end of file