On Friday, 5 October 2018 at 16:02:49 UTC, Nick Treleaven wrote:
On Thursday, 4 October 2018 at 06:43:02 UTC, Gopan wrote:
I have seen people enclosing the function logic inside a while(1) merely to stick on to single return at the end.

while(1)
{
        ...
        break; //otherwise return would come here.
        ...
        break;
}

return ...;

I think `switch (0) default:` is better, because it's not a loop so the intent is clear - no continue statements somewhere below (so it's also better than `do ... while (0);`). Also you might forget the final break statement with `while` and get an infinite loop.

`do ... while (0);` and also the loop above are abominations. They are for goto hypocrits, i.e. people who think that a goto when it is not named goto but works exactly like a goto is something better (the Voldemort goto). The breaks above and in are GOTOS, no point in obfuscating them. Sorry if I'm a little bit inflammatory about these constructs, but I have to work with code written by a `do {} while(0)` champion and I can tell you, it's the horror when you have to make changes. It was so bad that I finally used __attribute__((__cleanup__(x))) gcc extension to implement something resembling D's scope(exit) so that I'm sure that the code doesn't leak like it did before.


Reply via email to