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