Будни программиста

Jun 27, 2007 15:26

Лазаю по старому коду нашего сервера приложений, там было полно работы со строками в старом недобром стиле традиционного Си. Ну там: strcpy, strlen и прочие прелести.

Мама дорогая! Сколько ошибок, самых дурацких! Сколько кривостей, которые вот-вот сломаются!

Тут тебе и непонимание, что +1 к указателю это "плюс один элемент", а не "плюс один байт". Тут и memcpy без чётких проверок равенства размера принимающего и передающего буфера. Тут и strncpy без ручного закрытия нулём (ну не помнит народ, что эта функция при обрезке даёт незакрытую строку!). Тут и strcpy - без всяких гарантий отсутствия переполнения. Тут и буфера, статически и динамически выделяемые без символа под завершающий ноль. Тут и тяжёлая ненависть к оператору sizeof для указания размера буфера (мама, сколько я вычистил констант!). Тут и memcpy(buf, "строка", sizeof(buf)) - копирующий кусок мусора за пределами строковой константы и хорошо ещё не порождающий AV. И ещё несколько вполне диких конструкций.

Я в шоке. И ведь не ламеры какие, довольно опытные программеры писали.

Приличные классы строк рулят. Очень-очень сильно! Ибо нет функции более ебанутой, нежели strncat.

программирование

Previous post Next post
Up