Я обычно работаю с предупреждениями и уведомлениями PHP, так как я работаю над многими проектами, где он уже работает. Теперь, если я включу предупреждения и уведомления на этих живых веб-сайтах, они будут перегружены ими.
Проекты, над которыми я работаю дома, на местном, я обычно стараюсь отработать ВСЕ предупреждения и уведомления. Иногда не существует решения об отсутствии уведомления, поэтому мне просто приходится иметь дело с просмотром уведомления, пока я не решу полностью их отключить.
В конце концов, я не знаю, трачу ли я свое время, пытаясь избавиться от всех предупреждений и уведомлений, или я делаю это на самом деле для большего блага.
Отсюда мой вопрос: стоит ли вообще избегать предупреждений и уведомлений или это действительно не имеет значения?
@
.error_reporting(0);
? Я всегда используюerror_reporting(E_ALL);
и единственная разница между разработкой и производством -ini_set('display_errors', 'on');
противini_set('display_errors', 'off');
. Я всегда стараюсь исправлять уведомления и предупреждения, пока код еще свеж в моей памяти. Я часто посещаю журналы своей производственной системы, чтобы узнать, есть ли дополнительные предупреждения и уведомления, которые я мог пропустить.@
. После многих лет программирования на PHP я не использовал этот оператор. Ни разу. Никогда. Он не только скрывает потенциальные проблемы, но также оказывает влияние на производительность: за кулисами PHP отключает отчеты об ошибках перед вызовом кода -> вызывает код -> возвращает его к исходному значению. Эти шаги дороги, если@
в вашем коде десятки или сотни .Ответы:
У вас всегда должны быть включены предупреждения до самого полного уровня в разработке, тестировании и контроле качества, но не в производстве. На самом деле, если это приложение для собачьего кормления, то есть приложение, которое вы используете сами, то вы должны также включить его в производство.
В основном: включите их в тех случаях, когда человек, который их видит, может что-то с ними сделать (разработчик и разработчик могут исправить их самостоятельно, тестировщик в QA может сообщить об ошибке, и если разработчик также пользователь, тогда он также может исправить это в работе), но не включайте их, когда человек, который видит, не может ничего с ними поделать (пользователь в работе, который даже не знает, как программировать).
В идеале вы также захотите включить обработку предупреждений как ошибок, но это работает, только если их нет с самого начала ;-) Но помните об этом как о цели! Если есть возможность включить / выключить это отдельно для каждого файла, включите его для всех новых файлов и включите для всех файлов без предупреждений, и никогда не выключайте его снова после включения.
Итак, что делать с перегрузкой?
Вы составляете список каждого предупреждения и уведомления, а затем придерживаетесь следующих правил:
Примечание: оба из них требуют наличия некоторой базы данных журналов и механизма фильтрации журналов. Также обратите внимание, что «база данных журналов» и «механизм фильтрации журналов» могут быть просто текстовыми файлами и
grep
.Это важный бит. Без базы данных вы не узнаете, когда добавите новое предупреждение, а без фильтрации у вас все еще будет проблема перегрузки.
Примечание № 2: это работает не только для предупреждений, но и для проверки стиля, показателей сложности, покрытия кода, инструментов статического анализа и так далее. В принципе:
Это позволяет легко расставлять приоритеты: код, который часто редактируется и, следовательно, должен легко читаться и обслуживаться, со временем станет лучше. Код, который не затрагивается часто, не станет лучше, но это нормально, потому что никто не должен смотреть на него в любом случае. И , по крайней мере, хуже не станет.
Конечно, ничто не мешает вам выделять время специально для того, чтобы ничего не делать, кроме как выслеживать и убивать предупреждения. Просто так часто, это не выгодно с экономической точки зрения, и это ваша работа, как инженера, помнить об этом. «Инженер - это тот, кто может строить за доллар, а любой дурак - за два».
источник
Если предупреждения и уведомления приходят из вашего кода, определенно исправьте это. По моему опыту, в 95% это может быть доброкачественным, но 5% подчеркивают реальную проблему, которая может привести к бесчисленным часам, проведенным в погоне.
Если они исходят из стороннего кода, который вы должны использовать по той или иной причине, у вас, как правило, нет особого выбора.
Другой вопрос, если ваша унаследованная кодовая база действительно велика, тогда вы можете рассматривать устаревший код как сторонний, но требовать, чтобы новый код не содержал предупреждений.
источник
using
заявлений ...Это имеет значение. Предупреждение может не сломать ваши тесты или даже какое-то время появляться в дикой природе, но это может быть признаком надвигающейся ошибки. В настоящее время я разрабатываю в основном на C # / C ++ и имею определенную стратегию, чтобы избавиться от предупреждений и не допускать их в нашу базу кода. К счастью, это не ракетостроение =).
Если язык, на котором вы работаете, способен воспринимать предупреждения как ошибки и имеет различные уровни предупреждений, я бы сделал следующее:
Я обнаружил, что это не только работает с предупреждениями из моего кода, но и не допускает их .
источник