2010-06-24 2 views
0

Если у вас есть цепочка функций, которые работают с некоторыми данными, лучше ли каждая функция проверять достоверность данных перед ее использованием или выполнять эту проверку в начале цепочки и иметь каждую функцию в цепочке только " доверие ", что оно действительно?Лучше ли выполнять проверку данных на всех уровнях, которые используются?

+0

** НИКОГДА ** не доверяйте, что данные, переданные в действии, - особенно, если они вводятся пользователем пользователя. –

ответ

0

В зависимости от того, вызваны ли нижние функции в цепочке сами по себе, в значительной степени повлияет ваше решение. Если у вас жесткая система с определенными классами, которые вызывается только другими классами вашей программы, эти внутренние классы могут иметь гораздо более легкую проверку данных и «доверять» данным.

С «Совершенного кодом 2» Стив Макконнелл:.

«Один из способов баррикады для целей оборонительного программирования для обозначения определенных интерфейсов в качестве границ для„безопасных“районов Проверьте данные пересечения границы безопасной зоны для действительность и разумно реагировать, если данные недействительны.

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

1

Всегда рекомендуется применять защитное программирование. Вы должны рассмотреть все возможные сценарии.

Валидация становится чрезвычайно важной, если вход поступает от пользователя, в этом случае вы должны убедиться, что ваш код знает, что делать в каждом недействительном сценарии данных. Попробуйте утверждения для ситуаций, которые вы можете предсказать, и исключения для непредсказуемых, детали будут зависеть от языка, который вы используете. Это основа пуленепробиваемой программы.

Смежные вопросы