Barr Group TwitterBarr Group Vimeo

Rules:

6.2.a. All reasonable effort shall be taken to keep the length of each function limited to one printed page, or a maximum of 100 lines.

6.2.b. Whenever possible, all functions shall be made to start at the top of a printed page, except when several small functions can fit onto a single page.9

6.2.c. It is a preferred practice that all functions shall have just one exit point and it shall be via a return at the bottom of the function.

6.2.d. A prototype shall be declared for each public function in the module header file.

6.2.e. All private functions shall be declared static.    

6.2.f. Each parameter shall be explicitly declared and meaningfully named.

Example:

int
state_change (int event)
{
    int result = ERROR;

    if (EVENT_A == event)
    {
        result = STATE_A;
    }
    else
    {
        result = STATE_B;
    }
    return (result);
}

Reasoning: Code reviews take place at the function level and often on paper. Each function should thus ideally be visible on a single printed page, so that flipping papers back and forth does not distract the reviewers.

Multiple return statements should be used only when it improves the readability of the code.

Enforcement: Compliance with these rules shall be checked during code reviews.


Footnotes

[9] One way this can be accomplished is to insert a form feed character ‘FF’ (ASCII 0x0C) at the beginning of the first line on the comment block that precedes the function definition.