3 ms·
How to avoid problems with single line if statements
- nimblegorilla 12y agoI'm not a big fan of single line if statements. They seem to cause bugs more often than necessary.
- corysama 12y agoToo each his own. Personally, I keep hearing about these bugs, but I can count maybe three times I've witnessed one first hand in two decades of coding. I have however frequently witnessed cases of five single-line ifs in a row stretched out into 30 lines of code. What could have been 5 lines of dense and vertically symmetric code was instead a sea of noise and whitespace.
- nimblegorilla 12y agoSeems like an exaggerated straw man. I don't see how anyone could reasonably stretch a one-liner into 6. But yeah - "dense" is an adjective that I try to avoid when coding. Code should be clean, simple, and easy to read.
- corysama 12y agoif (test) { body; } if (... So, 5 lines each. Not 6. I miscounted. if (test1) body1; if (test2) body2; if (test3) body3; if (test4) body4; if (test5) body2; Between the two formats, I greatly prefer the second. It is understandable at a glance and makes the possible error in the last line stand out much more. In practice, I usually encounter the first style -even in cases as trivial as single-function-call-per-if.
- escherize 12y agoExplicit is better than Implicit. In Clojure: (if (is-of-age?) (give-beer)) or (if (is-of-age?) (do (give-beer) (allow gambling))) which is the same as: (when (is-of-age?) (give-beer) (allow gambling))
- gabriel34 12y agoIn VB: if age>ageLowLimit then givebeer end if is equivalent to: if age>ageLowLimit then givebeer and you can even mix both styles: if age>ageLowLimit then givebeer allowGambling else: giveSoda endif Altough I use it when it improves readability (for instance, with short tests and instructions), I don't like that you seem to open the code block with the "then", but you don't close it.