Comments 19
Всегда, после прочтения Ваших статей, возникает желание пересмотреть свой код на наличие подобных ошибок.
+8
UFO just landed and posted this here
У меня, скорее всего, что-то подобное с логикой MTP и PTP на телефоне. Фотографии копируются идеально, пока у них не появляются 'сателлиты' с одинаковым временем съемки и датой, отличающейся всего на одну цифру в дне. Как только это случается, телефон отдает более свежую фотографию под более старым именем.
+3
Похоже, что проверка на NaN просто лишняя и код можно сократить до
а вдруг идея проверки в том, что NaN не должен быть равен другому NaN. Иначе зачем вообще заводить метод сравнения, если можно обойтись штатным оператором сравнения ==?
В целом, очень не люблю «почти полностью» повторяющиеся куски кода. Как раз из-за повышенного требования к внимательности в процессе их написания. Сравнения, особенно лексикографические, лучше делать через std::tie.
0
вот только сегодня допустил такую же ошибку в коде. Сравнил одну переменную с собой. Юнит-тесты, однако, не стали этого от меня скрывать и половина из них попадала. В преведённых выше проектах видать юнит тестами не пользуются или только в крайних случаях
+1
Для себя придумал следующий способ избежать подобных проблем. Внутри класса заводим метод что-нибудь вроде asTuple. Закидываем в кортеж все необходимые значения и сравниваем кортежи лексикографически (что уже есть из коробки). PROFIT
0
Можно не совсем по теме? Что это за паттерн такой использовать "--size"?
+1
Интересно, почему ещё не было придумано синтаксического сахара, который бы позволял написать что-то вроде этого:
?
myClass obj1;
myClass obj2;
...
foreach(classField field in myClass{foo,bar,baz}) {
if (obj1.field != obj2.field) return false
}
return true;
?
-2
Поэтому в таких случаях стоит пользоваться кодогенерацией. Если она есть из коробки как в Rust, так вообще прекрасно.
+1
Данная статья относится к серии «ужасы для программистов». Продолжаю эту тематику и предлагаю почитать: Ноль, один, два, Фредди заберёт тебя.
0
Sign up to leave a comment.
Зло живёт в функциях сравнения