Работа над ошибками

Наткнулся сегодня на блог Александра Ложечкина и на его пост SAL - кое-что новое для С++ в частности. В двух словах SAL (Standard Annotation Language) - это способ дать компилятору немного больше информации о том, как та или иная функция использует переданные ей параметры: in/out аттрибуты, размеры буферов и т.п. Компилятор, используя эту информацию, может делать дополнительные проверки кода, находя, скажем, ошибки переполнение буфера. Более того, статические анализаторы кода, тот же PREfast, также могут использовать эту информацию, повышая тем самым эффективность и точность анализа. Так вот меня удивило количество, да и качество тоже, негативных комментариев. Как-то очень явно чувствуется отношение “нам это не надо, мы и сами умные”. Интересно, а кто тогда рассаживает баги, как не сами программисты?

Я даже разразился речью в комментариях:

Поздно наткнулся на этот блог, но не могу не высказаться.

Товарищи критикующие синтаксис и ратующие за спасительную абстракцию в виде STL в C++! Вы безусловно правы, но вы ни фига не понимаете, что такое работа над проектом с 5-10-15 летней историей и исходниками занимающими много много мегабайт. В условиях когда нужно и баги править и новую функциональность писать и уложиться в год или два, чтобы продать продукт. Я вам скажу, что в таких условиях все средства хороши и пренебрегать чем-либо даже не разобравшись что оно даёт очень неразумно.

Есть STL и алгоритмы? - нужно их применять и давать по шапке тем, кто тащит в код свой “улучшенный” вариант списка. Есть статический анализатор кода (lint, PREfast)? - пользуйтесь им и исправляйте найденные им ошибки. Есть runtime проверки обнаруживающие переполнение буфера и другие типичные ошибки? - включите их. Съэкономленный 1% процессорного времени вы всё равно потратите на поиски ошибок.

comments powered by Disqus