Click here to Skip to main content
15,903,385 members

The Weird and The Wonderful

   

The Weird and The Wonderful forum is a place to post Coding Horrors, Worst Practices, and the occasional flash of brilliance.

We all come across code that simply boggles the mind. Lazy kludges, embarrassing mistakes, horrid workarounds and developers just not quite getting it. And then somedays we come across - or write - the truly sublime.

Post your Best, your worst, and your most interesting. But please - no programming questions . This forum is purely for amusement and discussions on code snippets. All actual programming questions will be removed.

 
GeneralRe: Gotoless programming Pin
Jonathan C Dickinson28-Feb-12 1:56
Jonathan C Dickinson28-Feb-12 1:56 
GeneralRe: Gotoless programming Pin
Kirk Wood28-Feb-12 1:51
Kirk Wood28-Feb-12 1:51 
GeneralRe: Gotoless programming Pin
Anthony Appleyard27-Feb-12 19:24
Anthony Appleyard27-Feb-12 19:24 
GeneralRe: Gotoless programming Pin
GuyThiebaut27-Feb-12 20:39
professionalGuyThiebaut27-Feb-12 20:39 
GeneralRe: Gotoless programming Pin
Stefan_Lang27-Feb-12 22:02
Stefan_Lang27-Feb-12 22:02 
GeneralRe: Gotoless programming Pin
bigbadben27-Feb-12 22:57
bigbadben27-Feb-12 22:57 
GeneralRe: Gotoless programming Pin
glennPattonWork328-Feb-12 0:24
professionalglennPattonWork328-Feb-12 0:24 
GeneralRe: Gotoless programming Pin
BobJanova28-Feb-12 1:34
BobJanova28-Feb-12 1:34 
The reason not to use goto is not a technical one, but a code cleanliness one. A goto is an unstructured jump and makes it much harder for a human brain to comprehend the structure of the procedure. Loops with breaks and continues, conditionals, switch blocks and so on may translate to jump instructions in assembler or IL, but they're structured and therefore easier to understand.

The only time I would say it might be okay is the 'double break' (i.e. breaking out of a 2D or deeper loop set). When your logic is this complex it's usually better to take the looping code out into a sub-procedure or -function and use return instead, because chances are that procedure is too long already. (You can always ask the compiler to inline it if you think the function stack is critical.) In modern languages, proper error condition handling (i.e. exceptions) have taken away most of the situations in which you'd want to do this.

So I agree up to a point: fundamentalist 'never' dictums (dicta?) are not particularly helpful. But it is very rarely the most elegant approach to use a goto.
GeneralRe: Gotoless programming Pin
JackDingler28-Feb-12 2:39
JackDingler28-Feb-12 2:39 
GeneralRe: Gotoless programming Pin
bigbadben1-Mar-12 1:38
bigbadben1-Mar-12 1:38 
GeneralRe: Gotoless programming Pin
bigbadben29-Feb-12 1:13
bigbadben29-Feb-12 1:13 
GeneralRe: Gotoless programming Pin
Fran Porretto28-Feb-12 1:09
Fran Porretto28-Feb-12 1:09 
GeneralRe: Gotoless programming Pin
Reelix28-Feb-12 1:12
Reelix28-Feb-12 1:12 
GeneralRe: Gotoless programming Pin
JackDingler28-Feb-12 2:28
JackDingler28-Feb-12 2:28 
GeneralRe: Gotoless programming Pin
JackDingler28-Feb-12 2:36
JackDingler28-Feb-12 2:36 
GeneralRe: Gotoless programming Pin
reilly9628-Feb-12 2:39
reilly9628-Feb-12 2:39 
GeneralRe: Gotoless programming Pin
Member 797506328-Feb-12 3:41
Member 797506328-Feb-12 3:41 
GeneralRe: Gotoless programming Pin
JackDingler28-Feb-12 5:11
JackDingler28-Feb-12 5:11 
GeneralRe: Gotoless programming Pin
Charlie Ehler28-Feb-12 5:29
Charlie Ehler28-Feb-12 5:29 
GeneralRe: Gotoless programming Pin
SeattleC++28-Feb-12 6:21
SeattleC++28-Feb-12 6:21 
GeneralRe: Gotoless programming Pin
Member 205300628-Feb-12 6:35
Member 205300628-Feb-12 6:35 
GeneralRe: Gotoless programming Pin
TNCaver28-Feb-12 10:44
TNCaver28-Feb-12 10:44 
GeneralRe: Gotoless programming Pin
Plamen Dragiyski28-Feb-12 11:30
professionalPlamen Dragiyski28-Feb-12 11:30 
GeneralRe: Gotoless programming Pin
JamesSpencer1-Mar-12 7:23
JamesSpencer1-Mar-12 7:23 
GeneralRe: Gotoless programming Pin
Duncan Goodwin2-Mar-12 6:09
Duncan Goodwin2-Mar-12 6:09 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.