I often wish for a more rich way to layout a complex 2-level decision tree. Dividing it up into sub-functions/classes scatters the logic, while putting it all together is too heavy. However a 2D decision table would often be perfect.
I’ve just tracked it down. Here’s something about it by the same author Roedy Green (author of How to Write Unmaintainable Code) http://mindprod.com/project/scid.html (look for the words ‘decision table’)
How about Python? It lets you put your procedures in tables - dispatch tables, that is:
def eat(): print "eating"; def walk(): print "walking"
t = {"eat": eat, "walk": walk}
# now call the reqd. function via string s read from somewhere: keyboard, file, etc. ...
t[s]() # error handling omitted
Kidding apart:
>Dividing it up into sub-functions/classes scatters the logic
What is the issue with scattering the logic? if you break up your problem/solution into different logical units, with good judgement as to the points of breakup (i.e. coupling, cohesion, etc.), then what is the issue? Not clear.