Each line should contain at most one statement. Example:
argv++; // Correct
argc--; // Correct
argv++; argc--; // AVOID!
Compound statements are statements that contain lists of statements
enclosed in braces "{ statements }". See the following
sections for examples.
if-else
or for statement. This makes it easier to add statements
without accidentally introducing bugs due to forgetting to add braces.
A return statement with a value should not use
parentheses unless they make the return value more obvious in some way.
Example:
return;
return myDisk.size();
return (size ? size : defaultSize);
The if-else class of statements should have the following
form:
if (condition)
{
statements;
}
if (condition)
{
statements;
}
else
{
statements;
}
if (condition)
{
statements;
}
else if (condition)
{
statements;
}
else
{
statements;
}
Note: if statements always use braces {}. Avoid
the following error-prone form:
if (condition) //AVOID! THIS OMITS THE BRACES {}!
statement;
A for statement should have the following form:
for (initialization; condition; update)
{
statements;
}
An empty for statement (one in
which all the work is done in the initialization, condition, and update
clauses) should have the following form:
for (initialization; condition; update);
When using the comma operator in the
initialization or update clause of a for statement, avoid
the complexity of using more than three variables. If needed, use
separate statements before the for loop (for the
initialization clause) or at the end of the loop (for the update
clause).
A while statement should have the following form:
while (condition)
{
statements;
}
An empty while statement should
have the following form:
while (condition);
A do-while statement should have the following form:
do
{
statements;
}
while (condition);
A switch statement should have the following form:
switch (condition)
{
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
Every time a case falls through (doesn't
include a break statement), add a comment where the break
statement would normally be. This is shown in the preceding code
example with the /* falls through */ comment.
Every switch statement should
include a default case. The break in the default case is
redundant, but it prevents a fall-through error if later another case
is added.
A try-catch statement should have the following format:
try
{
statements;
}
catch (ExceptionClass e)
{
statements;
}
A try-catch statement may also
be followed by finally, which executes regardless of
whether or not the try block has completed successfully.
try
{
statements;
}
catch (ExceptionClass e)
{
statements;
}
finally
{
statements;
}