diff options
author | cbdev <cb@cbcdn.com> | 2020-04-19 20:40:42 +0200 |
---|---|---|
committer | cbdev <cb@cbcdn.com> | 2020-04-19 20:40:42 +0200 |
commit | 79b7e7dae5814942c04ca33e94e92b89547ffeb2 (patch) | |
tree | 0b1ca9a30b95d43604c81e7bde78786c33f8c186 /DEVELOPMENT.md | |
parent | 7c1a283c9213dd273d04af72e24b08beb83aec12 (diff) | |
parent | 462b409d3d1fa16fcab0c7f8b475bb8d8e8b3e90 (diff) | |
download | midimonster-79b7e7dae5814942c04ca33e94e92b89547ffeb2.tar.gz midimonster-79b7e7dae5814942c04ca33e94e92b89547ffeb2.tar.bz2 midimonster-79b7e7dae5814942c04ca33e94e92b89547ffeb2.zip |
Merge current master to rtpmidirtpmidi
Diffstat (limited to 'DEVELOPMENT.md')
-rw-r--r-- | DEVELOPMENT.md | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..495c4f9 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,48 @@ +# MIDIMonster development guide + +This document serves as a reference for contributors interested in the low-level implementation +of the MIDIMonster. It is currently a work in progress and will be extended as problems come +up and need solving ;) + +## Basics + +All rules are meant as guidelines. There may be situations where they need to be applied +in spirit rather than by the letter. + +### Architectural guidelines + +* Change in functionality or behaviour requires a change in documentation. +* There is more honor in deleting code than there is in adding code. + * Corollary: Code is a liability, not an asset. + * But: Benchmark the naive implementation before optimizing prematurely. +* The `master` branch must build successfully. Test breaking changes in a branch. +* Commit messages should be in the imperative voice ("When applied, this commit will: "). +* The working language for this repository is english. +* External dependencies are only acceptable when necessary and available from package repositories. + +### Code style + +* Tabs for indentations, spaces for word separation +* Lines may not end in spaces or tabs +* There should be no two consecutive spaces (or spaces intermixed with tabs) +* There should be no two consecutive newlines +* All symbol names in `snake_case` except where mandated by external interfaces +* When possible, prefix symbol names with their "namespace" (ie. the relevant section or module name) +* Variables should be appropriately named for what they do + * The name length should be (positively) correlated with usage + * Loop counters may be one-character letters + * Prefer to name unsigned loop counters `u` and signed ones `i` +* Place comments above the section they are commenting on + * Use inline comments sparingly + +#### C specific + +* Prefer lazy designated initializers to `memset()` +* Avoid `atoi()`/`itoa()`, use `strto[u]l[l]()` and `snprintf()` +* Avoid unsafe functions without explicit bounds parameters (eg. `strcat()`). + +# Build pipeline + +# Architecture + +# Debugging |