3 ms·
How would you end up with if (rc < 0) return rc; goto fail; Why would you indent hat next line? Presumably because you were trying to add it to the
by adrusi 11y ago
How would you end up with
if (rc < 0) return rc;
goto fail;
Why would you indent hat next line? Presumably because you were trying to add it to the existing if statement's non-existant block. But why would you do that if you don't see a block?
The problem with
if (rc < 0)
return rc;
is that we see the indentation and infer that there must be a block, so it's tempting to try to add to the block.
When you keep your entire conditional statement on one line, it looks, to someone scanning the code, like just any other line. It doesn't look like a block at all, in fact it looks more like a function call.
- fredophile 11y ago> Why would you indent hat next line? There are lots of reasons someone might indent the next line. Maybe they were in a rush. Maybe they were distracted by something else while they were working. Maybe they were tired. Maybe they were drunk. Mistakes will happen. Ideally wrong code will look wrong. All of the following examples do the same thing. If you know the code is supposed to call Foo() and Bar() if bVar is true, which of these examples make it obvious that something is wrong? if (bVar) Foo(); Bar(); if (bVar) Foo(); Bar(); if (bVar) { Foo(); } Bar(); if (bVar) { Foo(); } Bar(); The third, followed by the fourth, makes the mistake most obvious to me.