Occasionally, I find myself looking at code with nested switch statements, which need to be modified. For example, the following nested switch statements in MATLAB look at different particle types and charges:
switch(particleType) case 'lepton' switch(charge) case 'negative' name = 'electron'; case 'positive' name = 'positron'; otherwise assert('Unknown charge'); end case 'baryon' switch(charge) case 'negative' name = 'anti-proton'; case 'neutral' name = 'neutron'; case 'positive' name = 'proton'; otherwise assert('Unknown charge'); end otherwise assert('Unknown particle type'); end
A nice way to refactor this is to combine the cases of the nested switch statements:
matchStr = [particleType '_' charge]; switch(matchStr) case 'lepton_negative' name = 'electron'; case 'lepton_positive' name = 'positron'; case 'baryon_negative' name = 'anti-proton'; case 'baryon_neutral' name = 'neutron'; case 'baryon_positive' name = 'proton'; otherwise assert('Unknown particle type and charge'); end
This makes the code cleaner and easier to modify for future use.