Некоторая информация (не хочу путать вас с большим количеством дерьмового кода):
Я создал довольно большую консольную программу (мой самый большой проект на данный момент), которая мне очень помогает в управлениинекоторые счета / активы и многое другое.Я постоянно добавляю больше функций, но в то же время я изменяю код для работы с моим дерьмовым стилем кодирования .
Консольная программа имеет много команды пользователь может вводить и для каждой команды вызываются различные методы / создаются / обрабатываются объекты и т. Д.
Мои ключевые слова , которые сохраняются в командах ArrayList<String>
и my , имеют такой тип: [keyword] [...n more Strings]
ПРОБЛЕМА ПРОЕКТИРОВАНИЯ 1:
У меня есть метод cmdProcessor(String[] arguments)
, который обрабатывает ввод (команду) пользователя, и [keyword]
всегда является первым аргументом arguments[0]
.Это означает, что у меня есть большое количество операторов if этого типа: if(arguments[0].equalsIgnoreCase("keyword") callMethod(argmts);
, где в String[] argmts
оставшиеся аргументы [1] ... [n] .
- Это хороший способ справиться с этим или я должен пойти с коммутатором?
- Или что-то еще (что?)?Лучше ли сохранять ключевые слова в
HashMap<String, Method>
?
ПРОБЛЕМА ПРОЕКТИРОВАНИЯ 2:
Методы (см. Выше callMethod(argmts)
), которые запускаются введенным ключевое слово выглядит еще более хаотично.Поскольку один и тот же метод может иметь разные числа и формы аргументов, сохраненные в String[] argmts
, метод полон if(argmts.length == ...)
для проверки длины, и каждый из этих if-блоков имеет множество опций переключения, которые также имеют многоесли и так далее. последний и регистр по умолчанию в коммутаторе , который я всегда использую для обработки ошибок (выдает коды ошибок и объясняет, почему шаблон не совпадает и т. Д.).
- Это хорошо или есть лучшие способы?
- Я думал об использовании большого количества подметодов, которые также взорвали бы мою программу и стоили бы много времени, но, возможно, улучшат читабельность /Обзор.Это нормально, или каков наилучший вариант в таких случаях (много ifs и switch-case)?
Поскольку я хочу все больше и больше строить вокруг этой программы, возможно, мне следует начать сейчас, чтобы исправить плохой дизайн, пока не стало слишком поздно.:)