Нужно ли сообщать и исправлять PHP-уведомления? - PullRequest
9 голосов
/ 30 мая 2009

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

Какие существуют разные мнения по этому поводу? Есть ли лучшие практики, связанные с уведомлениями?

Ответы [ 6 ]

18 голосов
/ 30 мая 2009

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

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

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

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

9 голосов
/ 30 мая 2009

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

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

3 голосов
/ 30 мая 2009

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

PHP.net говорит:

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

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

2 голосов
/ 30 мая 2009

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

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

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

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

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

0 голосов
/ 14 февраля 2012

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

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

0 голосов
/ 30 мая 2009

В производственной среде НЕ СЛЕДУЕТ отображать НИКАКИЕ уведомления.

Даже если они сломают ваше приложение.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...