X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=devel%2FSTYLE;h=b18a9573c19abb6042bbe2bf29c367453759d0e5;hp=92de42ccc9ba1847234532a88b58840ab5b0151a;hb=HEAD;hpb=5872cba1ebfd69de738f31da3a491b573f7c2779 diff --git a/devel/STYLE b/devel/STYLE index 92de42cc..b18a9573 100644 --- a/devel/STYLE +++ b/devel/STYLE @@ -25,9 +25,7 @@ The following nonsense code demonstrates many aspects of the style: static some_type function (param_type param, param_type param) { - int i; - - for (i = 0; i < 10; i++) { + for (int i = 0; i < 10; i++) { int j; j = i + 10; @@ -55,21 +53,36 @@ function (param_type param, param_type param) if/for/while test) and are preceded by a space. The opening brace of functions is the exception, and starts on a new line. -* Comments are always C-style /* */ block comments. They should start - with a capital letter and generally be written in complete - sentences. Public library functions are documented immediately - before their prototype in lib/notmuch.h. Internal functions are - typically documented immediately before their definition. +* Opening parens also cuddle, even if the first argument does not fit + on the same line. + +* Ternary operators that span a line should be parenthesized like as + "a ? (\n b ) : c". This is mainly to keep the indentation tools + happy. + +* Comments are always C-style /* */ block comments, with a leading * + each line. They should start with a capital letter and generally be + written in complete sentences. Public library functions are + documented immediately before their prototype in lib/notmuch.h. + Internal functions are typically documented immediately before their + definition. * Code lines should be less than 80 columns and comments should be wrapped at 70 columns. +* Variable declarations should be at the top of a block; C99 style + control variable declarations in for loops are also OK. + Naming ------ * Use lowercase_with_underscores for function, variable, and type names. +* Except for variables with extremely small scope, and perhaps loop + indices, when naming variables and functions, err on the side of + verbosity. + * All structs should be typedef'd to a name ending with _t. If the struct has a tag, it should be the same as the typedef name, minus the trailing _t. @@ -93,3 +106,13 @@ libnotmuch conventions * Code which needs to be accessed from both the CLI and from libnotmuch should be factored out into libutil (under util/). + +* Deprecated functions should be marked with the NOTMUCH_DEPRECATED + macro which generates run time warnings with gcc and clang. In order + not to confuse doxygen this should go at the beginning of the + declaration like: + + NOTMUCH_DEPRECATED(major,minor) notmuch_status_t notmuch_dwim(void *arg); + + The @deprecated doxygen command can be used to generate markup in + the API docs.