Многие компиляторы имеют предупреждающие сообщения, предупреждающие программистов о возможных ошибках времени выполнения, логике и производительности, в большинстве случаев вы их быстро исправляете, но как насчет нефиксируемых предупреждений?
Как вы справляетесь с нефиксированными предупреждениями? Вы переписываете часть кода, или переписываете его «длинным, безрассудным способом», или отключаете все предупреждения вместе? Какой должна быть лучшая практика?
Что если вы редактируете чужой код, а в его коде есть предупреждения?
Вот хороший пример: jQuery имеет много предупреждений JavaScript, как обнаружил браузер класса Mozilla, почему разработчики jQ их не исправляют? Если вы внесете свой вклад в jQuery, вы собираетесь их исправить?
Ответы:
Некоторые предупреждения обычно безопасно игнорировать, но если вы сделаете это, то со временем они умножатся, пока не наступит тот день, когда их станет так много, что вы пропустите одно предупреждение, которое действительно имеет значение, потому что оно скрыто в шуме.
Немедленно исправляйте предупреждения (которые могут включать в себя отключение отдельных правил, если вы чувствуете, что это никогда не относится к вашему контексту).
источник
Мое мнение, что вы должны быть строгими с собой. Компилятор написан экспертами по языку. Если они сообщают, что что-то немного не так (кажется, запах кода), тогда код должен быть пересмотрен.
Вполне возможно написать код, который компилируется без ошибок и без предупреждений.
источник
Когда я писал на C и C ++, я включал самые строгие настройки, какие только мог, потому что хотел знать, когда что-то не имеет смысла для компилятора. Когда я закончил приводить и проверять возвращаемые значения, я был бы счастлив, потому что код был настолько правильным, насколько я мог это сделать.
Иногда я получал от кого-то код, который извергал бы предупреждения. Проверка источника показала, что они игнорируют вещи, которые были хорошей практикой программирования на C, делая их код хрупким.
Так что я думаю, что есть веские причины для строгости и времени, чтобы все исправить. Делать иначе - неаккуратно. Если бы у меня был сотрудник, который отключил предупреждения, я бы провел с ними некоторое время И менеджер объяснил, почему это действительно плохо.
источник
Я бы исправил любое предупреждение. Если вы игнорируете их и позволяете им накапливаться, вы можете пропустить что-то важное.
источник
Как правило, вы должны стремиться заставить компилятор молчать, чтобы новые предупреждения показывали больше. Эти предупреждения могут указывать на незначительные ошибки и должны обрабатываться соответствующим образом.
Что касается исправления кода других людей, это сильно зависит как от вашей культуры рабочего места, так и от текущего состояния кода. Вы не можете просто изменить код, если он запускает полный цикл повторного тестирования, как это было бы для кода в конце фазы тестирования или в процессе производства.
Спроси своего босса и действуй соответственно.
источник
Каждый раз, когда вы видите предупреждение компилятора, вы должны остановиться и подумать о том, действительно ли это проблема в ожидании взрыва вашего лица на сайте клиента, или что-то, что вы можете игнорировать. Хуже того, вещами, которые вы можете игнорировать СЕГОДНЯ, могут быть вещи, которые взорвутся на сайте клиента через несколько лет после, по-видимому, несвязанного изменения кода Somewhere Else.
Исправьте предупреждения. Период. Это или документируйте каждый из них, с таким количеством страниц объяснения, сколько необходимо, чтобы доказать, что это не риск, сопровождается подписанным заказом на продажу вашей любимой подруги (или порнухой), если выясняется, что это Был риск.
источник
Как правило, вы хотите, чтобы ваша сборка была без предупреждения. Предупреждения есть по причине, и часто они указывают на вполне реальные проблемы. Если вы привыкли игнорировать предупреждения компилятора, то в конечном итоге в вашей сборке их будет масса, и вы пропустите одно предупреждение, вызванное катастрофической проблемой, которая дорого обойдется вашей компании. С другой стороны, если ваша программа обычно компилируется без предупреждений, то каждое новое предупреждение немедленно замечается и может быть быстро устранено.
Сказав это, иногда компиляторы могут иметь предупреждения, которые имеют мало смысла и которые не могут быть легко исправлены. Я сталкиваюсь с этой ситуацией каждый день на работе с TI CodeComposer, который является средой разработки для TI DSP. У меня есть код C ++, который компилируется без предупреждений в Visual Studio, но приводит к странным предупреждениям в CodeComposer просто потому, что поддержка TI для стандарта C ++ могла бы быть лучше. К счастью, CodeComposer позволяет вам отключать отдельные предупреждения по отдельности, что мы и должны делать, когда нет способа исправить код, выдающий предупреждение.
источник
В моем случае предупреждения поступают от инструмента PyLint, и я могу отключить предупреждение для конкретной строки, добавив специальный текст в комментарии.
В большинстве случаев я этого не делаю. В большинстве случаев я изменяю код, следуя советам PyLint, потому что PyLint обычно верен. Однако не любит конструкции, которые, как правило, являются плохой идеей, но которые имеют смысл в определенном контексте. Например, он жалуется, если я поймаю все возможные исключения. Обычно, это правильно, это было бы плохой идеей. Тем не менее, в некоторых случаях я хочу перехватить все исключения, такие как отправка отчета об ошибке с подробной информацией.
Итак: почти во всех случаях избавляемся от взломов. Когда взлом действительно оправдан, добавьте комментарий, сообщающий, что с PyLint все в порядке.
источник
Некоторые из преимуществ строгости не были четко указаны в других ответах:
Существуют языковые различия по определенным видам предупреждений. Я думаю, что важно подумать и обсудить эту тему, а затем отключить некоторые отдельные предупреждения, если они кажутся совершенно бесполезными, чтобы можно было достичь строгости. Это было сделано в нескольких командах в моей карьере. Подробнее о моем опыте по теме
источник
Предупреждения и ошибки - это сообщения, которые компилятор использует, чтобы сказать программисту «что-то, что вы написали, не имело смысла» - разница между ними заключается в том, что с предупреждением компилятор желает угадать намерения программиста, тогда как с ошибкой компилятор не может даже сделать предположение.
Ошибки компилятора получит имя (я не буду говорить фиксированной ), но слишком часто, программисты (даже опытные) будут игнорировать предупреждения. Проблема с игнорированием предупреждений состоит в том, что иногда компилятор угадает неправильно, и если у вас есть более 1000 предупреждающих сообщений, легко пропустить предупреждающее сообщение, которое указывает, что компилятор неверно угадал.
С социологической точки зрения программы, которые имеют много предупреждающих сообщений, являются сломанной Windows .
источник