Статические assertions против динамических

Кстати, никто не знает как перевести на русский слово assertion?

Интересно сравнить частоту использования статических и динамических assertions. Поиск в Google Code Search выдаёт вот такие результаты:

В то же время общее число упоминаний “ASSERT” даёт около 386000 ссылок. Разница больше 3-х порядков! Из этого можно сделать вывод, что статические assertions, не смотря на всю пользу от них, практически не используются. Для сравнения, на один статический assertion в коде Vista приходится около 50 динамических.

Чем хороши статические assertions? Во-первых, все проверки выполняются во время компиляции, позволяя обнаруживать ошибки как можно раньше. Во-вторых, при компиляции выполняются все проверки, присутсвующие в программе, в том время как динамические assertions проверяются только во время выполнения каждой ветки кода (что может и не случиться до самого выпуска программы “в свет”).

Естественное ограничение статических assertions – они могут проверять только статические условия. Очевидно что в большинстве случаев динамический assertion – единственный выбор программиста. Тем не менее, следует стремиться использовать статические проверки везде, где это возможно.

comments powered by Disqus