design:coding_style_guide
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
design:coding_style_guide [2025/05/04 06:22] – created asie | design:coding_style_guide [2025/05/05 15:17] (current) – [Commenting] asie | ||
---|---|---|---|
Line 2: | Line 2: | ||
This style guide is meant to be loosely adhered to when writing libraries for the Wonderful ecosystem. | This style guide is meant to be loosely adhered to when writing libraries for the Wonderful ecosystem. | ||
+ | |||
+ | Note that this is very much a draft - I'm trying to codify what I learned from the past few years... please remain patient. | ||
===== Naming ===== | ===== Naming ===== | ||
Line 13: | Line 15: | ||
* Global C function names are written with '' | * Global C function names are written with '' | ||
* Global C/C++ macro definitions are written with '' | * Global C/C++ macro definitions are written with '' | ||
+ | * One exception is for macros which serve the role of functions - the line between a '' | ||
Regarding names: | Regarding names: | ||
- | * Global identifiers should be prefixed with the name of the library | + | * Global identifiers should be prefixed with the name of the library. |
+ | * For example, if you're working on '' | ||
+ | * Similarly, for '' | ||
* Following from that, categorizing functions should be done prefix-first, | * Following from that, categorizing functions should be done prefix-first, | ||
* For example, '' | * For example, '' | ||
+ | * Predicate functions should use the verb '' | ||
+ | * For example, '' | ||
* Some macros can refer to a type; for readability and to distinguish it from function categories, these should be // | * Some macros can refer to a type; for readability and to distinguish it from function categories, these should be // | ||
- | * For example, an I/O port will be referred to as '' | + | * For example, an I/O port will be referred to as '' |
- | ===== Code formatting | + | ===== Code style ===== |
+ | |||
+ | * Braces are always on the same line, and are separated with a space. | ||
+ | * If it doesn' | ||
<code c> | <code c> | ||
Line 31: | Line 41: | ||
if (multi_line) { | if (multi_line) { | ||
braces_on_the_same_line(1); | braces_on_the_same_line(1); | ||
- | | + | |
- | // ... but treat sizeof, etc. like a function. | + | |
- | memcpy(&b, &a, sizeof(a)); | + | |
} | } | ||
} | } | ||
</ | </ | ||
+ | |||
+ | * Pointers are declared with the asterisk '' | ||
+ | |||
+ | <code c> | ||
+ | const void __far *return_pointer(void __far *my_pointer); | ||
+ | </ | ||
+ | |||
+ | ===== Documentation ===== | ||
+ | |||
+ | Use [[https:// | ||
+ | |||
+ | * Javadoc-style '' | ||
+ | * For one-line comments, such as on enumerated types, '' | ||
+ | * When writing internal header macros/ | ||
+ | ===== Best practices ===== | ||
+ | |||
+ | * Where the size of a variable matters, use '' | ||
+ | * For 8-bit platforms, rely on '' | ||
+ | * For functions which return a " | ||
+ | * Prefer '' | ||
+ | |||
+ | ===== Target-specific notes ===== | ||
+ | |||
+ | ==== wswan ==== | ||
+ | |||
+ | * We're currently limited to GCC 6.3.0 on this platform; as such, the highest available standard is '' | ||
+ | * The cost of a function call is rather high (5 bytes and 18 cycles of overhead for argument-less functions on '' | ||
+ | |||
+ | ====== References ====== | ||
+ | |||
+ | * [[https:// |
design/coding_style_guide.1746339768.txt.gz · Last modified: 2025/05/04 06:22 by asie