News for hackers. Stuff that matters.
Re:Modern C [pdf] by jeanlucas on Monday November 28, 2016 @10:16AM (#13055904)
Have you ever used goto in C? I feel like most people bash on C just because they heard Dijkstra said it, and that's it.

Most code I saw while teaching it were not good cases, but sometimes it's a very interesting technique that can make the code easier to understand and shorter. I think that use is beautiful.

But it doesn't mean there aren't bad use cases.

Re:Modern C [pdf] by cr0sh on Monday November 28, 2016 @01:26PM (#13057326)
I think you meant "bash on goto" instead of "bash on C"?

Regardless, yes, a ton of people do bash on it because of Dijkstra - but at the time, he had a good point. In the industry of the time (as I understand it - I was a kid when he wrote that), there was a lot of "cowboy coding" out there, with goto's "gone wild" - jumping into the middle of everywhere and everything - and producing "spaghetti code".

But as you note, it can be very useful and make things easier to read (for instance, jumping out of deeply nested if-then constructs - though I could also argue a refactor might be the better solution).

I was once part of a discussion in a forum about state machines, and one guy posted a very beautifully done state machine that used no select-case construct, but rather goto statements, but done in a tight way that mimic'ed a select-case construct. I was very impressed at the time; it was some code for PIC Basic IIRC.

In time, I've changed my views from seeing goto as "always bad", to "can be very useful, in some situations - provided you know the risks of the tool".

In other words - think very carefully before you rush into using it; maybe there's a better or cleaner way.