|
|
|
4.29, Аноним (2), 01:06, 16/09/2023 [^] [^^] [^^^] [ответить]
| –3 +/– |
Сам ты васяноподелие. Буквально. А сообщения там куда полезней были, цппчек ничего не видел.
| |
|
|
2.9, warlock66613 (ok), 22:49, 15/09/2023 [^] [^^] [^^^] [ответить]
| +11 +/– |
Мнение: любой статический анализатор лучше отсутствия статического анализатора.
| |
|
3.15, Аноним (15), 23:29, 15/09/2023 [^] [^^] [^^^] [ответить]
| –3 +/– |
Исправлять надо причину появление ошибок, а не вылавливать их как блох уже после того как они появились.
| |
|
|
|
6.22, _kp (ok), 00:05, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Соответственно с микроконтроллерами не работаете, производительные модули не используете, про драйвера молчу.
Задачи то разные бывают.
Десктопное приложение и я на С++ добровольно писать не стану.
| |
6.134, Аноним (134), 11:58, 17/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
>Я не пользуюсь дырявыми языками родом из 50-х.
Напиши это в резюме и выдели жирным.
| |
|
|
4.19, Аноним (19), 23:56, 15/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Исправлять надо причину появление ошибок, а не вылавливать их как блох уже
> после того как они появились.
Ну да, нужно просто начать писать код без ошибок. Делов-то.
| |
|
5.73, Аноним (73), 17:00, 16/09/2023 [^] [^^] [^^^] [ответить]
| +2 +/– |
Или использовать известный безопасный язык со строгим конпелятором.
| |
|
4.21, _kp (ok), 00:02, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Есть ещё мелкие опечатки, описки, которые компилятор в вполне скомпилирует, а анализатор может на подобное выдать сообщение.
| |
4.144, Аноним (144), 13:35, 17/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Исправлять надо причину появление ошибок
Так можно и в протворечие с резолюции 260 (III) запросто войти.
| |
|
|
2.20, _kp (ok), 00:00, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Если самосборный использовать, подавив лишниее сообщения, то вполне полезен, и не раздражает, а в стоковом виде среди спама заметить что то подозрительное мало реально.
А ключами не все управляемо, сразу весь тип проверок или включается или выключается.
| |
|
|
4.30, _kp (ok), 01:20, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> а грепнуть лишнее не вариант?
Можно, если любите длинные выражения писать, и нужно если ещё и любите их потом править.
И в награду будет ощутимое снижение компиляции.
А более по делу, есть еще атрибуты, на которые cppcheck забивает, и выдаёт спам. Но в этом случае вывод то нефильтуем никаким грипом. И можно или вырезать всё или оставить всё.
Туда же, в cppcheck,врезается и список исключений на имена, конструкции с которыми лучше игнорировать.
Ну, Си используется для микроконтроллеров, и тамошние трюки он в шоке.
| |
|
5.33, Аноним (-), 02:22, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Ну, Си используется для микроконтроллеров, и тамошние трюки он в шоке.
Фирмару надо нормально писать - тогда оки все. Я проверял - у меня практически без варнингов, кроме разве что bug-hunting mode получается. А за трюки в критичном софте - воздается. Жесткими фэйлами. У него bug-hunting - это exploratory mode когда можно получить сообщения которые не проблема, но могут и быть проблемой.
И если фильтровать вывод анализера - вы как раз баги и пролюбите. Код надо фиксить, а не...
| |
|
6.36, _kp (ok), 03:09, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Фирмару надо нормально писать
> у меня практически без варнингов
Я не Ардуины, а о более реальных крупных проектах для микроконтроллеров.
От компилятора то варнингов и нет, они или хинты есть от cppcheck, и часто грубо не по делу, то есть спам.
> И если фильтровать вывод анализера - вы как раз баги и пролюбите.
Не думае те же Вы, что cppcheck святее Папы Римского? Нет конечно. Но дополнительную проверку делает.
И особенно полезен, когда часть кода писал не сам.
> Код надо фиксить, а не...
Да ну? Атрибуты убрать? В embedded это даёт заметный сразу эффект ;)
Или аппаратные фичи не использовать, потому что анализатор о них понятия не имеет?
А на обычное десктопное ПО анализатор в идеале ругаться не должен, ибо на подобных исходниках и тестировался.
| |
|
7.81, Аноним (-), 17:44, 16/09/2023 [^] [^^] [^^^] [ответить] | +1 +/– | У ардуины код крупный как раз - 100500 либ и черт его знает что там про них чеке... большой текст свёрнут, показать | |
|
6.66, penetrator (?), 14:11, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
когда у тебя на 1 ошибку 10000 бесполезных советов, то такой статический анализатор это геморой и явно НЕ дейли инструмент
| |
|
7.82, Аноним (-), 17:48, 16/09/2023 [^] [^^] [^^^] [ответить]
| –1 +/– |
> когда у тебя на 1 ошибку 10000 бесполезных советов, то такой статический
> анализатор это геморой и явно НЕ дейли инструмент
Или как вариант - д@рьмовый кодер, возомнивший себя самой умной клавой на глобусе. С сишкой это почему-то очень часто случается. И потом у таких в коде куча CVE и просто багов. А когда суперкод начинают тыкать палочкой - вооооон там майнтайнер XFS с такого счастья сбежал в панике, за такими кодерами разгребать устал как раз.
| |
|
8.89, Анонин (?), 18:40, 16/09/2023 [^] [^^] [^^^] [ответить] | –1 +/– | О, так это их стандартное поведение Они же типа ылитка А потом начинается или... текст свёрнут, показать | |
|
|
6.155, т1110втфатф1110 (?), 17:08, 17/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Сразу видно человека который фирмварь никогда не писал, иначе знал бы что hardware сишники, кроме костылей и велосипедов никогда ничего не пишут, потому что те кто разрабатывают железо, делают его через задницу, и вот эту задницу нужно подтирать софтом.
| |
|
7.158, Аноним (158), 18:11, 17/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
💯 пудов.
особенно такое проявляется конда и "платку сам разводил и фирмварю сам писал"
| |
|
|
5.59, Аноним (24), 13:12, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
зачем мне писать и править длинные выражения, что такое выражени, что такое снижение компиляции?
короче, я этот набор слов с рандомными запятыми не распарсил
| |
|
|
|
2.32, Аноним (-), 02:19, 16/09/2023 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Кто-то использовал? Мнение?
Вполне работоспособная и полезная штука, подтянула качество кода моим проектам и выловилось несколько проблемных мест. Вполне себе аргумент "за".
| |
2.119, Мда (?), 08:53, 17/09/2023 [^] [^^] [^^^] [ответить]
| +2 +/– |
Из бесплатных - лучший. Но полное г. по сравнению с платными.
| |
|
1.10, Аноним (15), 22:57, 15/09/2023 [ответить] [﹢﹢﹢] [ · · · ]
| –8 +/– |
Сначала слепили дврявый язык, а теперь думают как избавить код от ошибок 🤣
| |
|
2.56, Аноним (56), 10:40, 16/09/2023 [^] [^^] [^^^] [ответить]
| +3 +/– |
Другие написали точно такой же дырявый язык и пытаются всем внушить что он не дырявый. 🤣
| |
|
|
4.135, Аноним (134), 12:03, 17/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
>Сначала слепили дврявый язык, а теперь думают как избавить код от ошибок
Ждем пруфы дырок.
| |
|
|
|
1.11, Аноним (11), 23:03, 15/09/2023 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Именно поэтому Раст не нужен. Пока проблемы решаются через анализаторы кода, отдельное решение, не совместимое с прежней кодовой базой, не нужно.
| |
|
2.13, Аноним (13), 23:23, 15/09/2023 [^] [^^] [^^^] [ответить]
| +3 +/– |
Не решаются. Количество ИЗВЕСТНЫХ уязвимостей не даст соврать. А сколько ещё НЕИЗВЕСТНЫХ....
| |
|
3.136, Аноним (134), 12:07, 17/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
То же самое применимо к новому языку. А сколько у него еще НЕНАПИСАНЫХ ошибок...
| |
|
2.42, _kp (ok), 04:45, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Именно поэтому Раст не нужен. Пока проблемы решаются через анализаторы кода,
Rust - не даёт прострелить ногу, пока не используется unsafe. Ну, по крайней мере, концептуально должен не дать.
> решение, не совместимое с прежней кодовой базой, не нужно.
А чисто исходники на Си, и тем более C++, но написанные под разные их стандарты или реалиции компиляторов, архитектуры, типа переносимы без их правки. А уж проявление граблей при переносе и вовсе непредсказуемо, в том числе анализаторами.
Предположим в очередной стандарт Си добавят фичи из Rust, так на несовместимость исходников и слова не скажут, ибо не хочешь - не используй.
А тогда с Rust что не так? Там претензии не столько к менее читаемому синтаксису, сколько к системе сборки и зависимостям.
| |
|
|
4.44, Аноним (44), 09:04, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
угу,
а куча проектов все еще на более древних версиях
и переходить они не собираются, ибо костылей и ub там столько, что проще забить
| |
|
5.53, Аноним (56), 10:37, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Раст переписать в принципе невозможно. Давай ещё аргументов.
| |
|
4.60, Аноним (24), 13:13, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
это конкретно std::unique_ptr появился тогда, но никто не мешал до него написать свой
| |
|
3.55, Аноним (56), 10:39, 16/09/2023 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ты всегда используешь ансей в расте, зачем тогда Раст. Ни один растовик пока что на этот вопрос не смог внятно ответить.
| |
|
4.64, warlock66613 (ok), 13:27, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Rust всегда Rust, что safe, что unsafe: правила одни и те же и там и там. В unsafe блоках ты берёшь часть проверок на себя, только и всего. В safe части ты можешь расслабиться, в unsafe приходится напрячься, но unsafe блоки пишутся максимально просто — так, чтобы без особых трудностей следовать правилам, а запутанные вещи делаются в safe части.
| |
4.67, Аноним (19), 14:18, 16/09/2023 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Ты всегда используешь ансей в расте, зачем тогда Раст.
Ты всегда пишешь чушь?
> Ни один растовик пока что на этот вопрос не смог внятно ответить.
Внятно - это в рамках персонально твоей, альтернативной логики и реальности?
| |
4.70, Анонимусс (?), 16:01, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ни один растовик пока что на этот вопрос не смог внятно ответить.
Может ты просто не в состоянии осилить ответ?))
| |
|
|
|
1.12, Аноним (13), 23:22, 15/09/2023 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Чем бы ни страдать, абы на язык с нормальным компилятором не переходить, в котором бОльшая часть ошибок ловится на этапе компиляции без всяких дополнительных телодвижений.
| |
|
2.26, Аноним (24), 00:58, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
столько не живут, сколько ты будешь свой говнокод переделывать под хотелки компилятора
| |
|
3.31, Аноним (31), 01:51, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
А под хотелки статического анализатора не нужно переделывать, да?
| |
|
4.52, Аноним (56), 10:36, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Как только он начинает выпендриваться на него кладется болт и хотела идёт в исключения.
| |
|
5.111, Аноним (-), 21:30, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Как только он начинает выпендриваться на него кладется болт и хотела идёт в исключения.
А потом вы такой садитесь в тоету с непатченым ECU и наслаждаетесь острыми ощущениями... правда, сможете ли вы ими поделиться с окружающими - вот это как повезет уже. Как показали натурные эксперименты, везло не всем.
| |
|
4.61, Аноним (24), 13:15, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
да, не надо, потому что он указывает на косяки, а не на шизофазию головного мозга "разработчиков" раста и их видение реальности. эталонное шашечки и ехать
| |
|
|
|
3.65, warlock66613 (ok), 13:32, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Страуструп не понимает что UB — это не "некорректность". Суть не в том чтобы писать без ошибок, смысл в том, чтобы писать программы хотя бы синтаксически корректные, то есть без UB.
| |
|
4.68, Аноним (54), 14:32, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Пионеры не в состоянии понять, что UB - это следствие разнородности аппаратных платформ, с которыми C++ должен уметь эффективно работать непосредственно. И когда их любимый пионерский язычок натыкается на целочисленное переполнение в релизной сборке, он ведет себя точно так же неопределенно, как и C++.
| |
|
5.69, Анонин (?), 15:58, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> пионерский язычок натыкается на целочисленное переполнение в релизной сборке, он ведет себя точно так же неопределенно
А вот и нет. Что для signed int, что для unsigned int выполняется two’s complement wrapping.
Т.е. нет никакого UB, потому что результат выполнения будет однозначный, в отличие от плюсов и сишки.
https://github.com/rust-lang/rfcs/pull/560
Читайте маны, а не плодите мифы!
| |
|
6.71, Аноним (54), 16:03, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Вы либо крестик снимите, либо трусы наденьте: если вы пишете, что у вас нет runtime и overhead, то не пишите, что у вас нет UB, и наоборот - если у вас нет UB, тогда у вас есть runtime и/или overhead, которые обеспечивают поведение согласно вашим хотелкам на платформах, у которых поведение другое.
| |
|
7.83, Анонми (?), 17:51, 16/09/2023 [^] [^^] [^^^] [ответить]
| +2 +/– |
> если вы пишете, что у вас нет runtime и overhead, то не пишите, что у вас нет UB
Oh, my sweet summer child... Наличие UB не дает магического прироста скорости. Оно лишь дает право выстрелить себе в ногу, написав некорректный по определению код, а компилятору - право закрыть на это глаза.
Именно поэтому людям и приходиться использовать с C и C++ статические анализаторы: чтобы выловить свиней, заботливо подложенных создателями и комитетом C/C++ в свои убогие дырявые языки.
| |
|
8.84, Аноним (24), 17:57, 16/09/2023 [^] [^^] [^^^] [ответить] | –1 +/– | неофиты неисправимы если ты знаешь, как работает комп, на котором ты будешь з... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
|
26.181, Серб (ok), 17:16, 18/09/2023 [^] [^^] [^^^] [ответить] | +/– | Скопипащу с форума одного сайта Это то, что очевидно, но как-то многие делают в... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
9.96, Анонми (?), 19:38, 16/09/2023 [^] [^^] [^^^] [ответить] | +3 +/– | Ахаха Чел, ты это серьезно Вот и все, что нужно знать о противниках Раста За... текст свёрнут, показать | |
|
|
|
|
5.76, Анонми (?), 17:06, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Пионеры не в состоянии понять, что UB - это следствие разнородности аппаратных платформ, с которыми C++ должен уметь эффективно работать непосредственно
Извини, но нет: концепция UB не добавляет C/C++ возможность поддержки каких-то дополнительных платформ, и уж точно она не про эффективность. Согласно стандарту, наличие UB в программе делает ее некорректной на абсолютно любой платформе.
| |
5.98, warlock66613 (ok), 20:02, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Вы явно путаете undefined behavior и implementation-defined behavior. Это _очень_ разные вещи.
| |
|
6.101, Аноним (54), 20:19, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Нет, это вы не понимаете, что аппаратная платформа отличается от компилятора, для которого и применяется термин "implementation-defined", и что для аппаратной платформы поведение может быть четко определено даже если оно не определено в стандарте языка.
| |
|
7.105, Анонми (?), 20:44, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Ну как бы да, это и есть implementation-defined behavior. Но вы его путаете с undefined behavior, которое при любом раскладе undefined.
| |
|
|
|
|
|
12.178, Серб (ok), 14:09, 18/09/2023 [^] [^^] [^^^] [ответить] | +/– | Так, интереса ради, что на нем сейчас пишут в firefox Что подсмотреть за интере... текст свёрнут, показать | |
|
|
|
|
|
7.123, Советский инженер (?), 10:12, 17/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Бла бла бла UB, бла бла бла implementation-defined ...
Так и что там с корректностью?
Один спрыгивает с дырявости на корректность, другой с корректности на неопределенное поведение. Что значит по сути предьяв и сказать нечего. Остаётся только извивается.
| |
|
|
5.112, Аноним (-), 21:37, 16/09/2023 [^] [^^] [^^^] [ответить] | +/– | На практике это скорее ведет к хреновой куче багов в коде на ровном месте А ком... большой текст свёрнут, показать | |
|
|
3.77, Анонми (?), 17:18, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Страуструп тут недавно выступал и совершенно точно подметил, что те, кто думает, что корректность программы исчерпывается правильной работой с памятью, не понимают примерно ничего в этой жизни
Да, да... А то, что более 70% всех уязвимостей в софте вызваны именно неправильной работой с памятью в C и C++ он тактично промолчал?
| |
|
4.90, Аноним (54), 18:49, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Нет, ровно об этом и говорил: do not use low-level unsafe features - hide them in containers or libraries.
| |
|
5.97, Анонми (?), 19:52, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> hide them
Ага, уязвимости же от этого магическим образом исчезают. Это типа как мусор заметать под ковер. Как жаль, что всякие дурачки, изабретающие и внедряющие расты, не знают об этом простом и эффективном способе решения 70% проблем.
| |
|
|
|
|
|
2.34, Аноним (-), 02:25, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Лучше valgrind'а?
Он как бы не замена оному. Есть статический анализ, а есть анализ в рантайме. Valgrind о втором. Он рантайм-анализатор проблем и его больше смысла сравнивать с asan/ubsan чтоли. Которые так то тоже не замена статическому анализу а рантайм-дополнение к нему.
| |
|
|
2.37, burjui (ok), 03:25, 16/09/2023 [^] [^^] [^^^] [ответить]
| –1 +/– |
Действительно, ведь всего-то нужно начать с
int main(void)
{
return 0;
}
а дальше — согласно стандарту. Изи.
| |
|
3.45, Аноним (44), 09:05, 16/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
я бы еще добавил каст к void*, ну так, чисто чтобы держать планку
и чтобы следующие пограммисты не расслаблялись)
| |
3.62, Аноним (24), 13:17, 16/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
согласно теории ошибок либо у тебя в программе нет ошибок, либо она никому не нужна
| |
|
|
1.85, Аноним (85), 18:06, 16/09/2023 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Кто-то хоть раз с этим анализатором РЕАЛЬНЫЙ баг находил? вот который на самом деле происходит, а не так, "теоретически, если потом кто-то поменяет код".
По мне эти улититы анализа - пустая трата времени на то чтобы читать их высеры
| |
|
2.120, Мда (?), 08:56, 17/09/2023 [^] [^^] [^^^] [ответить]
| +2 +/– |
Да, например случайная копипаста недоправленная, т.е. что-то типа (точно не помню):
memcpy(x, y, sizeof(y));
memcpy(z, k, sizeof(y));
| |
|
3.153, Аноним (-), 16:53, 17/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Да, например случайная копипаста недоправленная, т.е. что-то типа (точно не помню):
> memcpy(x, y, sizeof(y));
> memcpy(z, k, sizeof(y));
Можно рубануть в стиле антибаг. Наример:
#define MEMCOPY(x, y) memcpy((x), (y), sizeof(y)).
...а теперь попробуйте так облажаться в MEMCOPY() вообще? Да, caveats у этого решения увы, тоже есть :). А еще в идеале нехило бы проверить что sizeof(x) == sizeof(y). Иначе можно жизнерадостно вынести все что за x из памяти и глазом не моргнуть если x меньше y по размеру.
Эти олдовые функции мало того что с дурным прототипом так еще злее опасной бритвы. В два счета снимут скальп случайно при бритье, если заказать что-то не то. И вот идете вы такой весь перемотаный бинтами на горле, черепухе, "ничего себе к цирюльнику сходил"
| |
|
|
1.106, Govein (?), 20:46, 16/09/2023 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> статического анализатора кода для языков C++ и С
А почему не С и С++? Так же намного привычнее.
| |
1.149, Каптер (?), 15:12, 17/09/2023 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А существует ли книга (или серия статей) о best practices в языке C? Чтоб сразу писать более надежно, а не набивать шишки.
| |
|
2.154, Аноним (-), 17:02, 17/09/2023 [^] [^^] [^^^] [ответить] | +2 +/– | 1 Embedded C coding standard - by M Barr - можно укачать нашару насколько я пом... большой текст свёрнут, показать | |
|
3.162, Аноним (147), 19:53, 17/09/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> 4. Забить в поискарь "antibug coding C" и получить бонусов из разных мест. Узнаете почему лучше сравнения делать вида if (10 == a) а не (if a == 10). Хинт: при опечатке if (a = 10) vs if (10 = a) это две большие разницы. Поэтому второй вариант - антибажный.
И есть несколько книг, описывающие, что так делать нельзя, так как хуже воспринимается человеком. А код должен понимать человек. И написан он должен быть так, что бы его было легче воспринимать.
А такие ошибки уже давно не то что cppcheck'ами проверятся, а самими компиляторами.
| |
|
4.169, Аноним (-), 01:56, 18/09/2023 [^] [^^] [^^^] [ответить] | +/– | Компилер при случае жестко рубанувший присвоение переменной a числу 10 как невоз... большой текст свёрнут, показать | |
|
3.172, Каптер (?), 07:28, 18/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
>при опечатке if (a = 10) vs if (10 = a)
Никогда не понимал, почему в сишке разрешено присваивание в условии. Ведь это ещё один источник ошибок.
| |
|
4.177, Аноним Максим (?), 12:18, 18/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
if( a ) .. - не смущает же
и if( retcode=fn() ) .. тоже не смущает, и более того, всё очевидно
А вот if( a = b ) - уже нарушает читаемость, и чужого не работающего кода особенно, ибо возникает подозрение на опечатку.
Ну а if( a = const ) - это с вероятностью 96% - ляп.
В оставшихся случаях это последствия автогенерации кода, или замены #ifdef на константные if.
| |
|
5.180, Аноним (-), 17:01, 18/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> и if( retcode=fn() ) .. тоже не смущает, и более того, всё очевидно
Вопрос: а зачем тут "retcode" вообще? if ( fn() ) было чем-то не круто? Или если retcode надо потом то зачем это в if () вообще было? Чтобы логику менее очевидной сделать?
| |
|
|
7.190, Аноним (-), 02:52, 21/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Чувак, открой для себя тег [!code] ... [!/code] (без восклицательных знаков, они тут для срыва парсинга этого тега). Хотя возможно ты получившимся контринтуитивным форматированием где мозг сломаешь какая ветка в каком случае выполняется специально вкатил и хотел подхайлайтить лишний раз почему так программить не стоит? :)
| |
|
|
|
|
5.191, Аноним (-), 02:54, 21/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Сэкономить одну строчку на кулхацкерских понтах
Как-то так в программах и появляются баги на ровном месте, а коллега неверно трактовавщий фрагмент кода - наломает и еще дров.
| |
|
|
|
|
|