Где должна проводиться проверка данных? - PullRequest
1 голос
/ 27 ноября 2010

У меня есть метод 'ABC', который делает некоторые вещи.Метод ABC вызывается из другого метода, метода XYZ.Где должна происходить проверка данных входных значений?

Стоит ли проверять в XYZ перед вызовом ABC?Если это неверный метод данных, ABC даже не будет вызван.

Или я должен проверить в ABC?

Или проверить в обоих местах?

Ответы [ 4 ]

3 голосов
/ 27 ноября 2010

Это зависит.

Если ABC только когда-либо вызывается XYZ, то вы можете подтвердить с помощью XYZ.

Если ABC имеет видимость вне XYZ (например, это публичный или внутренний метод), вам следует проверить его в ABC.

Если это критическая функция (ABC = AtomicBombControl), тогдапроверить везде, где вы можете.

0 голосов
/ 27 ноября 2010

Быстрый провал это хорошо.Вы должны сообщить о неверных данных как можно раньше, чтобы определить это.Итак, если вы знаете, что данные в XYZ плохие, то создайте исключение в XYZМетод ABC не имеет смысла, если данные уже плохие.

0 голосов
/ 27 ноября 2010

Я смотрю на ряд соображений:

Насколько важны правильные данные.

Где это может быть неправильно.

Где наиболее эффективнои эффективное место для проверки.

Где лучше всего это исправить.

Скорее всего, ваши плохие данные будут поступать из пользовательского интерфейса, и именно здесь вы можете запросить их.быть исправленным.

Ссылочные и уникальные ограничения наиболее эффективно обрабатываются в базе данных.Код, изменяющий базу данных, должен их перехватить и передать полезное исключение обратно в пользовательский интерфейс.

Многократная проверка стоит лишних затрат, если правильность действительно важна, а ошибки в коде могут генерировать неверные данные для задней части.конец.Я делаю многократные проверки таких вещей, как финансовые данные или что-то, что может привести к сбоям в работе всей системы.

0 голосов
/ 27 ноября 2010
If it's bad data method ABC won't even be called.

Я думаю, у вас есть ответ на ваш вопрос:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...