Как упоминал Рэнди, причиной такого рода кода в большинстве случаев является плохой дизайн приложения. Обычно я пытаюсь использовать «процессорные» классы в вашем случае.
Например, если есть какой-то общий параметр с именем «операция» и 30 различных операций с разными параметрами, вы можете создать интерфейс:
interface OperationProcessor {
boolean validate(Map<String, Object> parameters);
boolean process(Map<String, Object> parameters);
}
Затем реализуйте множество процессоров для каждой необходимой операции, например:
class PrinterProcessor implements OperationProcessor {
boolean validate(Map<String, Object> parameters) {
return (parameters.get("outputString") != null);
}
boolean process(Map<String, Object> parameters) {
System.out.println(parameters.get("outputString"));
}
}
Следующий шаг - вы регистрируете все свои процессоры в некотором массиве при инициализации приложения:
public void init() {
this.processors = new HashMap<String, OperationProcessor>();
this.processors.put("print",new PrinterProcessor());
this.processors.put("name_search", new NameSearchProcessor());
....
}
Итак, ваш основной метод становится примерно таким:
String operation = parameters.get("operation"); //For example it could be 'name_search'
OperationProcessor processor = this.processors.get(operation);
if (processor != null && processor.validate()) { //Such operation is registered, and it validated all parameters as appropriate
processor.process();
} else {
System.out.println("You are dumb");
}
Конечно, это всего лишь пример, и ваш проект потребует немного другого подхода, но я думаю, он может быть похож на то, что я описал.