Standards-12
Conditionals

Do not use a ? b : c as a statement [Conditional expression as statement: 1-4 points]

An expression of form a ? b : c should only be used to produce a value that the program uses.

Do not write an explicit empty else [Empty else: 1-2 points]

Instead of
  if(x > 0) 
  {
    doSomething();
  }
  else 
  {
  }
write
  if(x > 0) 
  {
    doSomething();
  }

Do not use an if-statement with an empty statement preceding else [Empty then: 1-2 points]

Instead of
  if(x > 0) 
  {
  }
  else 
  {
    doSomething();
  }
write
  if(x <= 0) 
  {
    doSomething();
  }

A loop body should not have the form

  if(...)
  {
     continue;
  }
  else
  {
    ...
  }
Statement continue; says to do the next iteration of the loop. But that is what the program would normally do at the end of the loop body.


Do not force a boolean expression to be a test where that is not appropriate. [Boolean force: 1 point]

Suppose that E is an expression of type bool. Statement
  if(E)
  {
     return true;
  }
  else
  {
     return false;
  }
is equivalent to
  return E.
If it is appropriate to treat a boolean expression in a way similarly to an arithmetic expression (as a value), then do so. It yields simpler and more efficient programs.

Do not use conditions that are always true or always false [Constant condition: 1-2 points]

Do not use an if-statement whose condition is always true or always false, except strictly for debugging or code-checking purposes. For example, if at a particular place it is not possible for i and k to have the same value, then do not say
  if(i == k) 
  {
    ...
  }

Do not use redundant tests in if-statements [Redundant test: 1-2 points]

The else part of an if-statement is done if the condition being tested is false. Do not test whether it is false. For example,
  if(x > 0)
  {
    step1();
  }
  else if(x <= 0)
  {
    step2();
  }
should be replaced by
  if(x > 0)
  {
    step1();
  }
  else
  {
    step2();
  }

If code is only performed by one branch of an if-statement, then it must be written inside that branch [Branch separation: 1 point]

Look at the following function definition.
  int demo(int x)
  {
    int y;
    if(x > 0)
    {
      y = x + 1;
    }
    else
    {
      return -x;
    }
    return y;
  }
Notice that statement return y can only be performed when x > 0. Moving it into the if-statement yields
  int demo(int x)
  {
    int y;
    if(x > 0)
    {
      y = x + 1;
      return y;
    }
    else
    {
      return -x;
    }
  }
A better form is
  int demo(int x)
  {
    if(x > 0)
    {
      return x + 1;
    }
    else
    {
      return -x;
    }
  }