Как стать автором
Обновить

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

Разделитель пути / работает и в Windows. Его использование позволяет избежать ошибок (и строковые литералы не так страшно смотрятся).

Хотел бы поинтересоваться про стиль. Как я понимаю, от ошибок типа "забыл поправить корпипасту", например, #9, в чистом С можно защититься кодогенерацией, например, x-macro, но такие конструкции будут выглядеть чужеродно. Как думаете, что важнее: принцип наименьшего удивления или DRY+небольшая страховка от опечаток по невнимательности?

ЗЫ Да, на какие только ухищрения люди ни идут, лишь бы статическим анализатором не пользоваться :)

"MAILER"

Правильно понимаю, чтобы баги не было, функция должна принимать не стринг, а другой тип, тогда местами перепутать просто не получится?

Э-э-э, а какой такой тип данных можно придумать для форматной строки?

Я думаю, тут дело в том, что использовалась стандартная функция, которая попросту не предназначена ни для какого "MAILER") Возможно, с чем-то спутали.

Не сделаете в этом году либо в начале следующего что-то вроде OWASP TOP 2021?

Не подсчитаете случаем классы ошибок и не выдадите свой PVS-TOP 10?

Вы имеете ввиду топ категорий ошибок, найденных статическим анализатором в open-source проектах? Возможно, это и правда было бы интересно, спасибо за мысль!

Именно

не смотрел проект, но в #9 как по мне, очень странный подход к выдаче элементов по индексу - switch-case захардкоженный. может, соотв. элементы разумно было также сгруппировать в массив? ну и соответственно по отрицательному индексу получим другую, системную ошибку.

имхо так и появляются ошибки - при попытке сменить одну логику на другую, что в голове удержать сложно.

лично мне часто в таких случаях сложно отследить, действительно ли код, написанный мной, отражает логику, которую нужно вводить, а особенно в мелочах (возникают вопросы типа "здесь нужно n, n-1 или n+1 элементов?", "в сравнении ставить знак больше или меньше?" и т.д.) и единственный для меня здесь выход - написать серию тестов, которые будут ломаться, пока я не напишу код из серии "примерно понимаю, как работает, но не точно, но работает правильно"

Зарегистрируйтесь на Хабре, чтобы оставить комментарий