E _ПРИМЕЧАНИЕ :Насколько полезно ДЕЙСТВИТЕЛЬНО исправить все?

Во-первых, я знаю, что этот вопрос поднимался здесь не раз:

Но чем больше я исправляю все Е _УВЕДОМЛЕНИЯ (, как говорят люди, ), тем больше я замечаю, что:

  • Я микро -оптимизирую
  • На самом деле я делаю больше кода и делаю его труднее в обслуживании и медленнее

Возьми пример:

Допустим, вы используете PHP-драйвер MongoDB, и у вас есть объект MongoDateв переменной класса с именем tsвнутри класса, который представляет одну строку в коллекции в вашей базе данных. Теперь вы получаете доступ к этой переменной, например:$obj->ts->secно PHP выдает подгонку (E _NOTICE ), потому что tsв этом случае не определяется как объект сам по себе, потому что эта конкретная строка не имеет поля ts. Итак, вы думаете, что это нормально, это желаемое поведение, если оно не установлено, возвращает ноль, и я сам позабочусь об этом вне собственной роботизированной работы интерпретатора (, поскольку вы заключаете это в функцию date(), которая просто возвращает 1970, если переменная nullилиnone-object).

Но теперь, чтобы исправить это УВЕДОМЛЕНИЕ E _как другой разработчик действительно хочет, чтобы я, так как наличие ЛЮБОГО УВЕДОМЛЕНИЯ E _ужасно, и это делает код медленнее, чтобы не делать это в соответствии с ошибками. Итак, я создаю новую функцию в классе $objс именем getTsи даю ей 3 строки буквально для того, чтобы ничего не делать, кроме как проверить, является ли tsvar объектом MongoDate, и вернуть его, если это так...

ЗАЧЕМ? Разве PHP не может сделать это идеально для меня в своем гораздо более быстром интерпретаторе, чем во время выполнения самого приложения? Я имею в виду везде, где мне приходится добавлять бесполезную выпуклость в свой код, в значительной степени пустые функции для обнаружения переменных, которые я на самом деле просто обрабатываю с помощью собственной способности PHP возвращать nullили проверять их instanceof, когда мне действительно нужно (когда это жизненно важно для работы и поведения указанной функции )и не заставляйте меня начинать с isset()я добавил около 300 строк isset()с, это выходит из-под контроля. Я, конечно, должен заставить это getTsработать, потому что вы не можете:

class obj{
    public $ts = new MongoDate();
}

Мне либо пришлось бы хранить tsвнутри__constructor(чему я тоже не очень рад, я использую много магии как есть )или использую функцию, чтобы определить, установлено ли оно (, что я и делаю сейчас ).

Я имею в виду, что я понимаю, почему я должен исправлять:

  • Неопределенные переменные
  • Назначение свойств неустановленных переменных(nullварс)
  • постоянные ошибки и т. д.

Но если вы протестировали свой код и знаете, что он безопасен и будет работать только так, как вам нужно, какой смысл исправлять все ошибки undefined indexили none-object? Разве добавление набора функций isset()s и 2 строк в ваш код не является микрооптимизацией -?

После того, как я сделал половину моего сайта, совместимого с E _NOTICE, я заметил, что на самом деле теперь он использует больше ЦП, памяти и времени... так что на самом деле какой смысл иметь дело с каждой ошибкой E _NOTICE, а не только те, которые ARE ошибки?

Спасибо за ваши мысли,

5
задан Community 23 May 2017 в 12:22
поделиться