X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=HACKING;h=2d9abe954e565aa5075853c5477b3c1dfde0e2f4;hb=ae33433bec2a5648fed05594810a9a2dca933586;hp=a5aa8d6654bd130be98df0ad7bb29901fdd01e4a;hpb=18037e79f1dba7342dc28595d0ac3e5d5ad922ac;p=libsigrok.git diff --git a/HACKING b/HACKING index a5aa8d66..2d9abe95 100644 --- a/HACKING +++ b/HACKING @@ -79,6 +79,9 @@ Random notes - Generally avoid assigning values to variables at declaration time, especially so for complex and/or run-time dependent values. + - Separate assignments from control flow. Example: Avoid the pattern + if (var = func()) {...} as it complicates review and maintenance. + - Consistently use g_*malloc() / g_*malloc0(). Do not use standard malloc()/calloc() if it can be avoided (sometimes other libs such as libftdi can return malloc()'d memory, for example). @@ -95,6 +98,9 @@ Random notes Do use g_try_malloc() or g_try_malloc0() for large (>= 1MB) allocations and check the return value. + - Endianness conversion: Prefer the common helpers that are provided in + libsigrok-internal.h, such as read_u16be() etc. + - You should never print any messages (neither to stdout nor stderr nor elsewhere) "manually" via e.g. printf() or g_log() or similar functions. Only sr_err()/sr_warn()/sr_info()/sr_dbg()/sr_spew() should be used. @@ -164,7 +170,9 @@ Doxygen - Mark private functions (SR_PRIV) with /** @private */, so that Doxygen doesn't include them in the output. Functions that are "static" anyway - don't need to be marked like this. + don't need to be marked like this. Functions in non-public files that + are explicitly excluded in Doxyfile don't need to be marked either. + Don't use @internal, always use @private instead. - Mark private variables/#defines with /** @cond PRIVATE */ and /** @endcond */, so that Doxygen doesn't include them in the output.