Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 19

Правда остаются вопросы типа «как это printf что-то там отрезает» :)
Где ссылка на тесткейс / баг в жире / и т.п.? :)
НЛО прилетело и опубликовало эту надпись здесь
Регулярно ставлю ссылки на issues в гитхабе. Если он протухнет до той степени, что они перестанут работать, бестолковые комментарии станут наименьшей из моих проблем.

А если репозиторий переименуют, и старые ссылки начнут выдавать 404?

У гитхаба есть редирект при смене адреса репо, за что ему отдельное спасибо. Начнут выдавать 404, если репо прибьют. Если проект на него полагается, в этом контексте неправильные ссылки тоже отойдут на второй план.
PVS-Studio может находить ошибки «переполнения переменных», как описано у меня в статье?.. ( При статическом анализе кода, возможно найти подобные ошибки. )
На мой взгляд статья сложна для восприятия. Я еле её прочитал и не уверен, что понял суть корректно. Правильно я понимаю, что суть сводится к следующему? Есть проверка вида A — B < C, где A, B, и C это переменные целочисленного типа. И это неправильно, так как возможно переполнение.

Такие конструкции ловить можно, но не факт, что это хорошая идея. Будет много бессмысленных срабатываний. А так вообще некоторые виды переполнения анализатор ловит.
A — B < C это было бы очень просто. Там скорее, о возможности нескольких переполнений сразу и влиянии на различные переходы if
(Начал описывать подробности, но удалил их. Слишком много писать.)

Спасибо за ответ.
(а насчёт моей статьи, возможно читать не легко, но описывал реальные проблемы в драйвере, которые по сей день вызывают панику ядра. при этом, вызываются удалённо)

С учётом того, что вы тестируете много разнообразных проектов, можете написать, какой стандарт C++ сейчас чаще всего встречается/используется и больше или меньше становится ошибок в проектах при использовании более новых стандартов C++?

К сожалению, не могу дать ответ, так как не собирали эту информацию.
Вторая часть статьи как раз показывает, что вместо «хорошего комментария» предпочтительнее вариант «самодокументирующегося кода» с выделением в функцию с говорящим названием. DRY
Я не согласен в данном случае. Заводить функцию, это ещё 3-4 строчки кода, вместо 2 для комментария. При этом функция будет весьма странна. Она будет состоять только из вызова memcpy и называть её нужно очень длинно! Что-то в духе: printf_above_stripped_our_nonprintable_control_characters_put_them_back :). В противном случае, опять-таки будет непонятно, зачем эта функция нужна. Такое себе… Я считаю комментарий хорошим вариантом.

Или вы имеете в виду, в имя функции печати добавить информацию про непечатные символы? В этом случае, что-то тоже я не знаю как коротко дать ей название. И при таком подходе будет сложно догадаться, зачем memcpy, пока не прочитаешь код выше. Тоже так себе…

Что-то в духе: printf_above_stripped_our_nonprintable_control_characters_put_them_back :).

Функцию можно назвать и короче, например: preserve_non_printable_characters, и добавить подробный поясняющий комментарий к ней.

Заводить функцию, это ещё 3-4 строчки кода, вместо 2 для комментария.

Функция заводится всего 1 раз, и поясняющий комментарий к ней достаточно будет написать 1 раз.

Она будет состоять только из вызова memcpy

А что в этом плохого? Тем более если компилятор заинлайнит потом тело функции?

В случае отдельной функции — для неё можно будет отключить диагностику PVS-Studio, но оставить для всего остального кода, разве нет?
а что мешало автору кода просто написать функцию с более адекватным названием вместо этого комментария?
А мне вот тоже слабо. Приведите пример адекватного названия.
Все чаще появляются статьи «как я фиксил баг», «советы разработчику», теперь комментарий…
Дальше что, будут статьи «как гуглить», «рекомендации для работы за компьютером»?
"… к сожалению 90% людей — идиоты..." — и не я не вы не исключение из этого правила…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий