design:coding_style_guide
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| design:coding_style_guide [2025/05/04 06:24] – 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: | ||
| Line 21: | Line 24: | ||
| * 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 33: | 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.1746339849.txt.gz · Last modified: by asie
