Pull to refresh
6
10
Алексей @Nanamuru

стараюсь быть лучше, но не всегда получается

Send message

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

у нас код.

он работаешь сейчас неправильно.

добавляем валатайл.

теперь правильно.

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

проект уже взрослый, 30 лет=) В нём много кода на Си или в Си-стиле)

Надеюсь статья оказалась для вас полезной)

да, именно этим и хороши проверки открытых проектов которые мы проводим) я надеюсь что разработчики после этого исправят множество багов=)

Все не так однозначно) У меня кстати произошел отвал в процессе рисования текстур - хорошо что есть автосейв. Ещё был момент когда новая текстура не хотела накладываться вместо старой, решилось все перезагрузкой блендера.

От непонимания много ошибок, согласен) поэтому надо внимательно изучать матчасть)

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

  1. Чаще всего код пишут простые программисты, которым нужен результат. Коммерция или нет, чаще приоритет в процессе написания проекта отдается в эффективность выполнения кода и скорость его написания. Грубо говоря, если ты занимаешься коммерцией, для тебя главное чтобы твой продукт работал и приносил деньги. Так же, если ты пишешь нечто бесплатное, первое что ты делаешь это пишешь работающую программу, чтобы ей могли пользоваться. Только потом уже идет процесс оптимизации. Если ты будешь идеально его писать с самого начала то это займет намного больше времени и сил. Только после того как программа написана ты начинаешь оптимизировать программу, ты можешь её переписать хоть с нуля, но главное что твоя программа уже работает и используется.

  2. Дебажить большие проекты на самом деле очень трудно. Часто в проекте не остается никого из программистов писавших код. И вот ты приходишь в компанию, начинаешь копать какой ни будь файлик в котором более 50тыс строк кода и через пару часов ты уже сидишь и на автомате начинаешь пытаться что то найти. Чем дольше ты листаешь, тем труднее искать ошибку. Анализатор тебе сразу показывает возможные проблемные участки кода, и ты сразу можешь начать исправлять ситуацию. Опять же есть специальная база по ошибкам и ты можешь там глянуть приблизительно в чем может быть проблема и быстро проверить нет ли где проблем в тех или иных файлах.

Что интересно, все ошибки найдены в крупных проектах. Как мне кажется, вовсе не джуны эти проекты разрабатывали) Суть: код пишут люди, и мы по массе причин не идеальны и допускаем ошибки. Самые частые ошибки - очень простые. Те же самые копи-паст и сравнения.

можете ознакомится если интересно:

Зло живёт в функциях сравнения

Последствия использования технологии Copy-Paste

И это только про простые ошибки)

тот самый код с GitHub: https://github.com/gcc-mirror/gcc/blob/master/gcc/ree.cc

возврат значений есть, проблема в отредактированном нами коде, поправил)

Делюсь с вами ярким примером UB для этого случая: https://godbolt.org/z/9nx83GE64

Так же с санитайзером, который так же заметил, что может присутствовать UB: https://godbolt.org/z/v7EE1jr8f

Таким образом, в процессе оптимизаций компилятором, да и компилятор у нас не один и каждый делает по своему, проблема может возникнуть, и мы будем долго бегать по коду пытаясь найти в чем же проблема. UB дело такое)

я рад что такой проггер как ты прочитал мою статью и разложил все по полочкам в номере 0) суть многих ошибок в том, что они просты до невозможности, их легко найти и исправить и... при этом они существуют в коде) про это и наш ТОП))) спасибо за коммент=)

Information

Rating
532-nd
Location
Тульская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Software Developer, Backend Developer
C++
Software development
Git
Linux