Должны ли быть сообщены и исправлены PHP-уведомления?

Недавно я переключился на новую настройку, сообщающую PHP-уведомления; мой код работал нормально, но эти уведомления не были исправлены, но мне интересно, имеет ли смысл исправить все и оставить их сообщенными или просто игнорировать их и отключить уведомление о регистрации.

Что это за разные мнения? Существуют ли какие-либо рекомендации, связанные с уведомлениями?

Ответ 1

Ошибки - это ошибки. Они должны быть исправлены до того, как ваш код будет работать.

Предупреждения - это предупреждения. Они предупреждают вас, что то, что вы делаете, вероятно, плохая идея, даже если она работает (или, похоже, работает) для вас в данный момент. Поэтому они тоже должны быть исправлены.

Уведомления - это уведомления. Их следует заметить. Отсюда и название. Возможно, это не проблема в том, что ваш код генерирует некоторые, но это то, что вы должны рассматривать и оценивать в каждом конкретном случае.

И, конечно, гораздо легче заметить уведомления, если вы не получите 400 из них. Таким образом, есть большая польза от их устранения. Это делает те, которые вы еще не заметили, становятся более заметными.

Ответ 2

Да, я бы исключил уведомления из любого PHP-кода, который я пишу, даже если он просто отключает специальный идентификатор уведомления, когда я исследовал все его экземпляры. Уведомления (т.е. Индекс undefined, инициализированная переменная) очень часто указывают на ту ситуацию, которую вы забыли предвидеть. Вы должны исследовать каждый из них, устранить реальные проблемы, а затем, возможно, подавить других (с комментарием, в котором говорится, почему).

В самом руководстве по PHP говорится: "Уведомления будут предупреждать вас о плохом стиле", поэтому я думаю, что официальная "лучшая практика" будет в значительной степени тем, что я изложил. Следуйте за хорошим стилем, если у вас нет веской причины не делать этого.

Ответ 3

Это зависит от того, какие уведомления - большинство уведомлений являются свидетельством плохого запаха кода - индексы массива undefined и т.д. Если вы подавляете уведомление, оставьте комментарий рядом с ним, указав, почему вы думаете, что он должен быть подавлен.

PHP.net говорит:

Примечание. Включение E_NOTICE во время развитие имеет некоторые преимущества. Для отладки: сообщения NOTICE предупредит вас о возможных ошибках в ваш код. Например, использование предупреждаются недопустимые значения. это чрезвычайно полезно найти опечатки и сэкономить время для отладки. УВЕДОМЛЕНИЕ сообщения будут предупреждать вас о плохих стиль. Например, $arr [item] лучше писать в виде $arr ['item'] поскольку PHP пытается обрабатывать "элемент" как постоянная. Если это не константа, PHP предполагает, что это строковый индекс для массив.

Я бы рассматривал каждое уведомление как бесплатную возможность улучшить ваш код.:)

Ответ 4

Они называются предупреждениями, потому что ваша программа все еще работает. Но это означает, что вы сделали что-то неправильно. Исправьте их, если у вас есть время, чтобы сделать это, и если вы хотите, чтобы код был "чистым" и, возможно, хорошим. Ваш код не подходит, если вы получаете предупреждения.

... и предупреждения могут привести к ошибкам:

Если вы получаете предупреждение переменной undefined, это означает, что вы не проверяли наличие переменной. Что делать, если вы используете эту переменную в запросе MySQL? Это не сработает и сломает вашу программу.

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

Лучший способ - это код, который позволяет избежать предупреждений.;)

Ответ 5

В рабочей среде вы НЕ ДОЛЖНЫ отображать ЛЮБЫЕ уведомления.

Даже если они сбой вашего приложения.

Это просто советник безопасности.

Если вы перейдете от старой версии php к недавней, вы должны хотя бы взглянуть на уведомление, чтобы узнать, что это значит. Иногда это касается безопасности, а иногда просто информирует вас о том, что эта функция устарела.

Вы также должны следить за уведомлениями, за исключением случаев, когда вы действительно знаете, что делаете.

Ответ 6

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

Я бы всегда их исправлял, они почти всегда являются причиной худших ошибок.