From 1000d9c2b0ea4b7c4bea022f8ad3ca756d1ed389 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 5 Jan 2011 10:58:35 -0700 Subject: [PATCH] maint: document dislike of mismatched if/else bracing * docs/hacking.html.in (Curly braces): Tighten recommendations to disallow if (cond) one-line; else { block; }. * HACKING: Regenerate. Suggested by Daniel P. Berrange. --- HACKING | 35 ++++++++++++++++++++++------------- docs/hacking.html.in | 34 +++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 24 deletions(-) diff --git a/HACKING b/HACKING index d64670900c..4a71b370cf 100644 --- a/HACKING +++ b/HACKING @@ -161,33 +161,42 @@ Do this, instead: However, there is one exception in the other direction, when even a one-line block should have braces. That occurs when that one-line, brace-less block is -an "else" block, and the corresponding "then" block *does* use braces. In that -case, either put braces around the "else" block, or negate the "if"-condition -and swap the bodies, putting the one-line block first and making the longer, -multi-line block be the "else" block. +an "if" or "else" block, and the counterpart block *does* use braces. In that +case, put braces around both blocks. Also, if the "else" block is much shorter +than the "if" block, consider negating the "if"-condition and swapping the +bodies, putting the short block first and making the longer, multi-line block +be the "else" block. if (expr) { ... ... } else - x = y; // BAD: braceless "else" with braced "then" + x = y; // BAD: braceless "else" with braced "then", + // and short block last -This is preferred, especially when the multi-line body is more than a few -lines long, because it is easier to read and grasp the semantics of an -if-then-else block when the simpler block occurs first, rather than after the -more involved block: + if (expr) + x = y; // BAD: braceless "if" with braced "else" + else { + ... + ... + } - if (!expr) +Keeping braces consistent and putting the short block first is preferred, +especially when the multi-line body is more than a few lines long, because it +is easier to read and grasp the semantics of an if-then-else block when the +simpler block occurs first, rather than after the more involved block: + + if (!expr) { x = y; // putting the smaller block first is more readable - else { + } else { ... ... } -If you'd rather not negate the condition, then at least add braces: +But if negating a complex condition is too ugly, then at least add braces: - if (expr) { + if (complex expr not worth negating) { ... ... } else { diff --git a/docs/hacking.html.in b/docs/hacking.html.in index 900e2428ad..0d81b0bed1 100644 --- a/docs/hacking.html.in +++ b/docs/hacking.html.in @@ -209,11 +209,13 @@

However, there is one exception in the other direction, when even a one-line block should have braces. That occurs when that one-line, - brace-less block is an else block, and the corresponding - then block does use braces. In that case, either - put braces around the else block, or negate the - if-condition and swap the bodies, putting the - one-line block first and making the longer, multi-line block be the + brace-less block is an if or else + block, and the counterpart block does use braces. In + that case, put braces around both blocks. Also, if + the else block is much shorter than + the if block, consider negating the + if-condition and swapping the bodies, putting the + short block first and making the longer, multi-line block be the else block.

@@ -223,31 +225,41 @@ ... } else - x = y; // BAD: braceless "else" with braced "then" + x = y; // BAD: braceless "else" with braced "then", + // and short block last + + if (expr) + x = y; // BAD: braceless "if" with braced "else" + else { + ... + ... + }

- This is preferred, especially when the multi-line body is more than a + Keeping braces consistent and putting the short block first is + preferred, especially when the multi-line body is more than a few lines long, because it is easier to read and grasp the semantics of an if-then-else block when the simpler block occurs first, rather than after the more involved block:

-  if (!expr)
+  if (!expr) {
     x = y; // putting the smaller block first is more readable
-  else {
+  } else {
       ...
       ...
   }
 

- If you'd rather not negate the condition, then at least add braces: + But if negating a complex condition is too ugly, then at least + add braces:

-  if (expr) {
+  if (complex expr not worth negating) {
       ...
       ...
   } else {
-- 
GitLab