diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-05-01 01:26:23 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-05-03 00:44:46 +0400 |
commit | 5db9ab82b94fab16e69b0228aaf1e972520bd04a (patch) | |
tree | d7f3cef2ee889713f28553710453a25e7f3df1f2 | |
parent | 691d0dd0a9c901286c2a0a28c30ec4d13bcd2032 (diff) |
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>
-rw-r--r-- | Documentation/CodingGuidelines | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index aeaa82451e..02ca67c4ca 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -222,6 +222,33 @@ For C programs: - Double negation is often harder to understand than no negation 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 constructs, can be extremely confusing to others. Avoid them, unless there is a compelling reason to use them. |