3 ms·
Can we say something about using goto?
by gnuvince 12y ago
Can we say something about using goto?
- pervycreeper 12y agoor a loop that is not guaranteed to end?
- klodolph 12y agoPRNGs don't work that way. They have periods over which all possible output values are produced, close to an equal number of times. Even when producing tuples, we know that this won't loop forever.
- pervycreeper 12y agoYou know that, because you already know how "rand" is implemented
- Amezarak 12y agoWhy? To be sure they should be used sparingly, but it looks it makes enough sense in this particular case and isn't single-handedly going to cause any spaghetti-code problems. In this particular case I think a goto fits the bill.
- drdeadringer 12y agoIf you use it responsibly, I don't see much problem.
- rgawdzik 12y agoAll tools can be misused. Goto has a dark past, but it can still be used responsibly. It's almost like generalizing a concept like OOP to be bad because horrible code can be made with it.
- adamgravitis 12y agoAt least in this situation, you can see the entire affected control flow within four lines. goto generally becomes a problem when suddenly everything is short-circuiting everywhere and you can't see where control's getting passed off to.
- mholt 12y agoSure. This is a fair use case. Kind of makes more sense than a full while loop, especially since the case is only likely to occur at most once per call to GetRandomName().
- hmrmaxwell 12y agoIt seems that mild goto usage is not uncommon in at least some major golang projects: https://github.com/dotcloud/docker/search?q=goto&ref=cmdform https://github.com/dotcloud/docker/search?q=goto&ref=cmdform https://github.com/hashicorp/serf/search?q=goto&ref=cmdform https://github.com/hashicorp/serf/search?q=goto&ref=cmdform https://github.com/skynetservices/skydns/search?q=goto&ref=cmdform https://github.com/skynetservices/skydns/search?q=goto&ref=c... https://github.com/calmh/syncthing/search?q=goto&ref=cmdform https://github.com/calmh/syncthing/search?q=goto&ref=cmdform https://github.com/juju/juju/search?q=goto&ref=cmdform https://github.com/juju/juju/search?q=goto&ref=cmdform EDIT: formatting
- kyrra 12y agoGo is fairly strict in the use of goto: http://golang.org/ref/spec#Goto_statements http://golang.org/ref/spec#Goto_statements They have their use cases, and this code seems like a fine use of it. Goto is taught as one of those things you should never use but it still has a purpose. If you look at any C code goto still used. You just have to make sure not to overuse it.