CodingGuidelines: on comparison

There are arguments for writing a conditional as "a < b" rather than
"b > a", or vice versa.  Let's give guidance on which we prefer.

See http://thread.gmane.org/gmane.comp.version-control.git/3903/focus=4126
for the original discussion.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 2014-04-30 14:26:23 -07:00
parent 691d0dd0a9
commit 5db9ab82b9
1 changed files with 27 additions and 0 deletions

View File

@ -222,6 +222,33 @@ For C programs:
- Double negation is often harder to understand than no negation - Double negation is often harder to understand than no negation
at all. at all.


- There are two schools of thought when it comes to comparison,
especially inside a loop. Some people prefer to have the less stable
value on the left hand side and the more stable value on the right hand
side, e.g. if you have a loop that counts variable i down to the
lower bound,

while (i > lower_bound) {
do something;
i--;
}

Other people prefer to have the textual order of values match the
actual order of values in their comparison, so that they can
mentally draw a number line from left to right and place these
values in order, i.e.

while (lower_bound < i) {
do something;
i--;
}

Both are valid, and we use both. However, the more "stable" the
stable side becomes, the more we tend to prefer the former
(comparison with a constant, "i > 0", is an extreme example).
Just do not mix styles in the same part of the code and mimic
existing styles in the neighbourhood.

- Some clever tricks, like using the !! operator with arithmetic - Some clever tricks, like using the !! operator with arithmetic
constructs, can be extremely confusing to others. Avoid them, constructs, can be extremely confusing to others. Avoid them,
unless there is a compelling reason to use them. unless there is a compelling reason to use them.