summaryrefslogtreecommitdiff
path: root/doc/CODING_STYLE.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/CODING_STYLE.md')
-rw-r--r--doc/CODING_STYLE.md109
1 files changed, 109 insertions, 0 deletions
diff --git a/doc/CODING_STYLE.md b/doc/CODING_STYLE.md
new file mode 100644
index 0000000..533cffb
--- /dev/null
+++ b/doc/CODING_STYLE.md
@@ -0,0 +1,109 @@
+# Coding Style Examples
+
+Detailed examples for the project's C++ coding style.
+
+---
+
+## Core Rules Examples
+
+### Const Placement
+```cpp
+const T* name // Correct
+const T *name // Wrong
+```
+
+### Pre-Increment
+```cpp
+++x // Correct
+x++ // Wrong (except when postfix needed)
+```
+
+### Operator Spacing
+```cpp
+x = (a + b) * c; // Correct - spaces around all operators
+x=(a+b)*c; // Wrong - no spaces
+```
+
+### No Auto (except complex iterators)
+```cpp
+int count = get_count(); // Correct
+auto count = get_count(); // Wrong
+
+for (auto it = map.begin(); ...) // OK - complex iterator type
+```
+
+### No C++ Casts
+```cpp
+(int)value // Correct
+static_cast<int>(value) // Wrong
+```
+
+---
+
+## Preprocessor Style
+
+```cpp
+#if defined(MY_TAG)
+ // code here
+#endif /* defined(MY_TAG) */
+```
+
+Always use `defined()` and closing comment.
+
+---
+
+## Struct Initialization
+
+### Good
+```cpp
+const WGPUDescriptor desc = {
+ .format = g_format,
+ .dimension = WGPUTextureViewDimension_2D,
+};
+```
+
+### Bad
+```cpp
+WGPUDescriptor desc = {};
+desc.format = g_format;
+desc.dimension = WGPUTextureViewDimension_2D;
+```
+
+Use designated initializers, not field-by-field assignment.
+
+---
+
+## Class Keywords Indentation
+
+```cpp
+class MyClass {
+ public: // 1 space indent
+ void foo();
+
+ private: // 1 space indent
+ int field_;
+};
+```
+
+---
+
+## Comments
+
+### Function Comments
+```cpp
+// Initializes the audio engine with default settings.
+void audio_init() {
+ ...
+}
+```
+
+One-line comment for non-obvious functions.
+
+### File Headers
+```cpp
+// demo64k - 64 kilobyte demo
+// src/audio/synth.cc
+// Audio synthesis engine
+```
+
+Three-line header for all source files.