Читать «Стандарты программирования на С++. 101 правило и рекомендация» онлайн - страница 149
Андрей Александреску
• reinterpret_cast
". (См. рекомендацию 92).
• printf
) подвержены ошибкам и небезопасны, поскольку не могут быть полностью проверены ни вызывающим, ни вызываемым кодом. (См. рекомендацию 99.)
•
•
Избегайте троеточий в сигнатурах ваших функций. Избегайте вызова функций с переменным количеством аргументов со своими собственными сигнатурами, даже если это вполне корректные функции из стандартной библиотеки С, такие как sprintf
. Вызовы sprintf
часто выглядят более компактными и простыми для понимания, чем эквивалентные вызовы с использованием форматирования stringstream
и операторов operator<<
— так же, как легче сесть в машину, не оборудованную ремнями и подушкой безопасности, да еще и без дверец. Удобства при использовании таких функций не стоят возникающего при этом риска. Функции в стиле printf
представляют собой серьезную проблему безопасности (см. [Cowan01]), так что имеется целая отрасль разработки инструментария для поиска ошибок такого рода (см. [Tsai01]).
Лучше использовать безопасные в смысле типов библиотеки, которые поддерживают переменное количество аргументов иными средствами. Например, библиотека форматирования [Boost] использует новейшие средства С++ для совмещения безопасности со скоростью и удобством.
Ссылки
99. Не используйте недействительные объекты и небезопасные функции
Резюме
Вы же не используете просроченные лекарства? И недействительные объекты, и "антикварные", но небезопасные функции способны навредить здоровью ваших программ.
Обсуждение
Имеется три основные категории недействительных объектов.
•