Loop-switch sequence
Appearance
A loop-switch sequence is a specific derivative of the spaghetti code programming antipattern where a clear set of steps is implemented as a byzantine switch-within-a-loop.
Note: it is not necessarily an antipattern to use a switch statement within a loop. It is only incorrect when used to model a known sequence of steps. The most common example of the correct use of a switch within a loop is an event handler. In event handler loops, the sequence of events is not known at compile-time, so the repeated switch is both necessary and correct. (see Event-driven programming, Event loop, and Event-driven finite state machine).
Example of antipattern (pseudocode)
// parse a key, a value, then three parameters String key; String value; List<String> args; for ( int i = 0; i < 5; ++i ) { switch( i ) { case 0 : key = stream.parse(); break; case 1 : value = stream.parse(); break; default: args.add( stream.parse() ); } }
Refactored solution (pseudocode)
// parse a key and value String key = stream.parse(); String value = stream.parse(); // parse 3 parameters List<String> args; for ( int i = 0; i < 3; ++i ) { args.add( stream.parse() ); }