Comments 9
Разделитель пути / работает и в Windows. Его использование позволяет избежать ошибок (и строковые литералы не так страшно смотрятся).
Хотел бы поинтересоваться про стиль. Как я понимаю, от ошибок типа "забыл поправить корпипасту", например, #9, в чистом С можно защититься кодогенерацией, например, x-macro, но такие конструкции будут выглядеть чужеродно. Как думаете, что важнее: принцип наименьшего удивления или DRY+небольшая страховка от опечаток по невнимательности?
ЗЫ Да, на какие только ухищрения люди ни идут, лишь бы статическим анализатором не пользоваться :)
"MAILER"
Правильно понимаю, чтобы баги не было, функция должна принимать не стринг, а другой тип, тогда местами перепутать просто не получится?
Не сделаете в этом году либо в начале следующего что-то вроде OWASP TOP 2021?
Не подсчитаете случаем классы ошибок и не выдадите свой PVS-TOP 10?
не смотрел проект, но в #9 как по мне, очень странный подход к выдаче элементов по индексу - switch-case захардкоженный. может, соотв. элементы разумно было также сгруппировать в массив? ну и соответственно по отрицательному индексу получим другую, системную ошибку.
имхо так и появляются ошибки - при попытке сменить одну логику на другую, что в голове удержать сложно.
лично мне часто в таких случаях сложно отследить, действительно ли код, написанный мной, отражает логику, которую нужно вводить, а особенно в мелочах (возникают вопросы типа "здесь нужно n, n-1 или n+1 элементов?", "в сравнении ставить знак больше или меньше?" и т.д.) и единственный для меня здесь выход - написать серию тестов, которые будут ломаться, пока я не напишу код из серии "примерно понимаю, как работает, но не точно, но работает правильно"
Топ-10 ошибок, найденных в C#-проектах за 2021 год