TICS Coding Standard Viewer 
TIOBE Software Quality Framework
Print-friendly version
©TIOBE Software www.tiobe.com
 
C++ Coding Standard
Search

Rule:  CFL#013Checked automatically with code checker

Synopsis:All flow control primitives (if, else, while, for, do, switch) shall be followed by a block, even if it is empty
Language:C++
Severity Level:3
Category:Control Flow


Description:

Example 1:

if (DoAction())
{
    bResult = true;
}

Example 2:

// Count number of elements in array.
for (unsigned nIndex = 0;
     anArray[nIndex] != 0;
     nIndex++)
{
}

There are three exceptions to this rule:

  • an "else" statement may directly followed by another "if"
  • statements following a case label do not have to be enclosed in a block, unless they define a variable.
  • An if clause, followed by a single statement, does not have to enclose that single statement in a block, provided that the entire statement is written on a single line. Of course the exception is intended for those cases where it improves readability. Please note that the entire statement must be a one-liner (of reasonable length), so it is not applicable to complex conditions. Also note that the exception is only made for if (without else), not for while etc. Examples:
    if (getToken() == ASSIGN) v = expr(true);
    if (failure) throw VerySorry(errno);
    
    Rationale for the exception: code readability can be improved because the one-liner saves vertical space (by a factor of 4). The lurking danger in later maintenance, where someone might add a statement intending it to be subject to the condition, is absent in the one-liner.



Literature References:
Ellemtel Rec 25
ISC++ Rec 4.3