mirror of https://github.com/djcb/mu.git
55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
* HACKING
|
|
|
|
Here are some short guidelines for hacking on the 'mu' source code.
|
|
|
|
** Coding style
|
|
|
|
For consistency and even more important, to keep things understandable, mu
|
|
follows the following rules:
|
|
|
|
1. basic code layout is like in the Linux kernel coding style, with the '{'
|
|
on the same line as the statement, except for functions. Tabs/spaces
|
|
have width 8.
|
|
|
|
2. lines must not exceed 80 characters
|
|
|
|
3. functions must not exceed 30 lines (there may be rare exceptions), and
|
|
30 lines is already pretty long.
|
|
|
|
4. source files should not exceed 1000 lines
|
|
|
|
5. a function's cyclomatic complexity should not exceed 10 (there may be
|
|
rare exceptions). You can test the cyclomatic complexity with the
|
|
pmccabe tool
|
|
|
|
6. filenames have their components separated with dashes (e.g, 'mu-log.h')
|
|
|
|
7. global functions have the prefix based on their module, e.g., mu-foo.h
|
|
declares a function of 'mu_foo_bar (int a);', mu-foo.c implements this.
|
|
|
|
8. non-global functions *don't* have the module prefix, and are declared
|
|
static.
|
|
|
|
9. functions have their return type on a separate line before the function
|
|
name
|
|
|
|
10. in C code, variable-declarations are at the beginning of a block; in
|
|
principle, C++ follows that same guideline, unless for heavy yet
|
|
uncertain initializations following RAII.
|
|
|
|
11. returned strings of type char* must be freed by the caller; if they are
|
|
not to be freed, 'const char*' should be used instead
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#+ Local Variables: ***
|
|
#+ mode:org ***
|
|
#+ End: ***
|