Coding Styleguide
Table of Contents
Comments
Doxygen generates our sourcecode documentation pages automatically by reading the sourcecode. If you set a block with C++ comment lines, where each line starts with an additional slash, the text will be shown in the doxygen generated docs. Note that a blank line ends a documentation block. You may add two blocks, a first one with a brief description and a second with an extended description for a class, struct or function.
/// SAT support. /// Implements ATA by tunnelling through SCSI. class sat_device
Use in line comment style to add explanation on defines and variables. A comment starting with three slashes, will appear in doxygen. Comments that start with only two slashes, will be invisible there.
// ATA ONLY bool sct_erc_set; // set SCT ERC to: unsigned short sct_erc_readtime; // ERC read time (deciseconds) unsigned short sct_erc_writetime; // ERC write time (deciseconds) unsigned char curr_pending_id; // ID of current pending sector count, 0 if none unsigned char offl_pending_id; // ID of offline uncorrectable sector count, 0 if none
Some Hints
A snippet cut out of a mail from Christian Franke on developers list..
Due to its long history, many contributors and late move from C to C++, smartmontools is in fact a mixture of different coding styles.
In my recent additions I used (or tried to use) the following for new code:
Naming: lowercase_underline_lowercase (like C++ std::) Indentation: 2 Blanks, no tab characters No extra indentation level for {...} blocks No extra line for '{' except for the function body. Lokal variables: C++/C99 declaration statements: First use=declaration=initialization (I really dislike traditional C style with all decls at the beginning of a block :-) Null pointers: "Stroustrup Style": 0 instead of NULL, (T *)0 if needed or compiler check is desired. Checks in boolean style: if (p) ; if (!p) ; In comments: "nullptr" (forward compatible to C++0x :-) Exceptions: Avoid any try/catch blocks if possible, use RAII instead