Лучше ли проводить проверку данных на каждом используемом уровне? - PullRequest
0 голосов
/ 24 июня 2010

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

Ответы [ 2 ]

1 голос
/ 24 июня 2010

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

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

0 голосов
/ 24 июня 2010

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

Из "Код завершен 2" Стива Макконнелла:

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

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

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