Мне было интересно, следует ли использовать метод Belt and Braces (Suspenders) для программирования и, в частности, для валидации данных - это хорошая практика или нет, Это произошло из следующего примера.
Я создавал форму, и я добавил Listeners во все поля, которые должны означать, что кнопка OK
включена, только если все поля в форме имеют допустимые значения. Затем я записывал код, который запускался при нажатии кнопки OK
.
Пессимистическая сторона меня решила, что пояс и скобки никогда не причинят вреда никому, и это не могло бы повредить, чтобы подтвердить форму снова, если у меня возникла ошибка в моей логике формы.
Но тогда я не знал, что положить, если проверка не удалась. Если я сделаю что-то вроде этого:
if (! form.isValid()) {
displayErrorMessage();
}
тогда мне нужно создать код для отображения сообщения об ошибке, которое никогда не должно отображаться. Любой, кто сохранит этот код в будущем, будет беспокоиться и, возможно, путается этим в теории ненужного диалога. Последнее, что я хочу, это то, что кто-то задается вопросом, почему этот конкретный диалог никогда не отображается.
Опция на другом конце шкалы:
if (! form.isValid()) {
throw new RuntimeException("This should never happen!");
}
Честно говоря, я чувствую себя грязным, даже набрав его, но, возможно, есть веская причина использовать его, которого я пропустил.
Итак, в итоге я закончил:
assert form.isValid();
Тем не менее, недостатком этого является то, что он на самом деле не имеет пояса и брекетов, поскольку фигурные скобки отсутствуют во время выполнения, поэтому, если в коде есть ошибка, мои фигурные брюки все равно будут падать.
Так что, возможно, я не должен иметь дополнительную валидацию вообще, но есть еще часть меня, которая думает, что это не может повредить.
Мне было бы интересно узнать, что вы делаете в подобных ситуациях.
(Изменить): вопрос задает вопрос, как наилучшим образом гарантировать, что форма возвращает достоверные данные. Предположим, что результат формы подтвержден снова до того, как он окажется в базе данных и так далее.)