Если у вас есть цепочка функций, которые работают с некоторыми данными, лучше ли каждая функция проверять достоверность данных перед ее использованием или выполнять эту проверку в начале цепочки и иметь каждую функцию в цепочке только " доверие ", что оно действительно?Лучше ли выполнять проверку данных на всех уровнях, которые используются?
ответ
В зависимости от того, вызваны ли нижние функции в цепочке сами по себе, в значительной степени повлияет ваше решение. Если у вас жесткая система с определенными классами, которые вызывается только другими классами вашей программы, эти внутренние классы могут иметь гораздо более легкую проверку данных и «доверять» данным.
С «Совершенного кодом 2» Стив Макконнелл:.
«Один из способов баррикады для целей оборонительного программирования для обозначения определенных интерфейсов в качестве границ для„безопасных“районов Проверьте данные пересечения границы безопасной зоны для действительность и разумно реагировать, если данные недействительны.
Такой же подход может использоваться на уровне класса. Публичные методы класса предполагают, что данные небезопасны ... Как только данные были приняты общедоступными методами класса , частные методы класса могут считать данные безопасными ».
Всегда рекомендуется применять защитное программирование. Вы должны рассмотреть все возможные сценарии.
Валидация становится чрезвычайно важной, если вход поступает от пользователя, в этом случае вы должны убедиться, что ваш код знает, что делать в каждом недействительном сценарии данных. Попробуйте утверждения для ситуаций, которые вы можете предсказать, и исключения для непредсказуемых, детали будут зависеть от языка, который вы используете. Это основа пуленепробиваемой программы.
- 1. Неправильно ли использовать объекты сущности на всех уровнях веб-приложения?
- 2. Могу ли я выполнять операции с данными на разных уровнях?
- 3. Кому следует выполнять проверку кода?
- 4. Может ли ячейка одновременно выполнять проверку данных и vlookup?
- 5. Выбрать все детско на всех уровнях
- 6. найти детей на всех уровнях в питона
- 7. Должен ли MVVM ViewModel выполнять преобразование/проверку типов?
- 8. Сопоставление данных на нескольких уровнях
- 9. Curses - Выполнять неблокирующую проверку на stdin - C
- 10. Полезно ли скрывать элементы, которые не используются?
- 11. Поиск активов, которые не используются
- 12. Обратный инженер структуры базы данных на основе запросов, которые используются
- 13. Неправильно ли вы ссылаться на общие библиотеки, которые не используются?
- 14. Хеш-функции, которые используются и используются более популярны
- 15. Найти все теги, которые используются
- 16. Зачем мне нужно выполнять проверку на стороне сервера?
- 17. Xcode жалуется на неиспользованные функции, которые используются
- 18. унизительно данных на нескольких уровнях в R
- 19. Отображение только меток, которые используются?
- 20. Как синхронизировать две базы данных, которые используются два diffrent применения
- 21. Выполнять операции во всех таблицах во всех базах данных
- 22. Как получить все капли на всех уровнях в контейнере?
- 23. Перетаскивание на разных уровнях
- 24. Spring Security с X509 на всех уровнях аутентификации
- 25. Выполнять проверку ошибок для Excel VBA Import
- 26. Поиск узла на всех уровнях элемента в файле XML
- 27. Сколько соединений может выполнять postgresql лучше?
- 28. которые не используются Cabal пакеты
- 29. Поиск DLL, которые фактически используются, и те, на которые ссылаются
- 30. Лучше ли выполнять прямые загрузки таблицы в высокопроизводительном приложении?
** НИКОГДА ** не доверяйте, что данные, переданные в действии, - особенно, если они вводятся пользователем пользователя. –