On Thu, Oct 04, 2001 at 07:50:33PM -0700, Justin Erenkrantz wrote: > On Thu, Oct 04, 2001 at 07:13:16PM -0700, Aaron Bannert wrote: > > Huh? That's a bit of a stretch. If this is going to turn into a style > > war, let it be spoken from the Apache Style Guide: > > > > "Opening braces are given on the same lines as statements, or on the > > following line at the start of a function definition." > > I'd like to point out the other bazillion places where this happens. > I don't care. I'm just pointing out that if you want to change > the style, change style without changing anything else. That > seems to be the operative rule that most people work under. > > Furthermore, I won't commit any patches that change the braces, so > there! =) When you finally get commit access or find someone who > agrees to enforce this point (I'm sure Ryan will do so), I don't > care. It isn't a big enough of a deal. *I DON'T CARE* =) > Whatever... > > [ Please realize that I'm writing this laughing... ]
You know, this type of bantering gets really annoying when it is on a mailing list, even though it is pretty amusing to see you two discuss it over dinner. Let's restrict the discussion to things you actually care about. > > > No, I think that if you are not familiar that the C construct > > > (ctx->remaining) is equivalent to (ctx->remaining != 0) than I > > > don't really have any sympathy for you. IMHO, we're not here to > > > teach people C. =) > > > > Bzzzt, wrong! Those are not semantically equivalent statments. The ! > > operator treats the operand as a boolean, the == operator treats the > > operands as the same type. Let me do some english translations: > > > > if (!ctx->remaining) { > > > > "If ctx->remaining is not true..." > > > > > > if (ctx->remaining <= 0) { > > > > "If ctx->remaining is less than or equal to zero..." > > > > There is a huge semantic difference there, and it plays directly into the > > readability of the code. > > Yoohoo, look again - that's not what I said. =) I'm not disagreeing > that <= 0 is different (of course it is). I'm saying that != 0 is > identical to not having the explicit comparison (and I bet there is > someone out there that will prove me wrong). Also, there is no > boolean type in C. =) You *are* thinking of Java - I knew it... Aaron's change is correct -- it is one of the principles of defensive programming that all logical branches of a program should be correctly followed even if the input is unexpected. Let's say a cosmic ray happens to pass through the memory chip and sets that value to be negative. Which branch of the tree is more likely to be a safe path? An assert is never a safe path in production code. Likewise, defensive programming calls for curly-braces around blocks of conditional code. Don't argue about things that aren't worth the effort of *me* having to read the argument. ....Roy