Один длинный метод никогда не подходит, если только это не один оператор switch, где случаи очень короткие (разбор токена или что-то в этом роде).
Вы могли бы по крайней мере реорганизовать длинный метод в меньшие методы с описательными именами.
Если это вообще возможно, вы можете начать свой метод с определения того, что он должен делать, изучив форму, а затем, если / еще, вы переходите к различным вариантам. Однако нет вложенных if, которые делают код нечитаемым. Просто
enum Operation {
ADD, DELETE;
}
...
Operation operation = determineOperation(form);
if (operation == Operation.DELETE) {
doDelete(form);
} else if (operation == Operation.ADD) {
doAdd(form);
}
Если вы можете пойти так далеко, ваша логика будет чистой и понятной, и вы сможете делать любой рефакторинг, какой захотите.
Сложнее всего прояснить свою логику, и вы можете сделать это шаг за шагом. Не выбирайте шаблон, пока не поймете, в чем именно заключается ваша проблема.