Есть ли проблемы с "использованием диагностики"?
С perl я почти всегда использую:
use strict;
use diagnostics;
Я предложил "использовать диагностику" вместо use warnings;
здесь, и я получил некоторую отрицательную обратную связь. Итак, теперь я думаю:
Есть ли проблема с use diagnostics;
?
Ответы
Ответ 1
diagnostics
не является лексической прагмой, подобной warnings
. Вместо этого он устанавливает глобальную переменную $^W
(например, используя флаг -w
), который позволяет предупреждать обо всех кодах, хочет он это или нет, и писал ли вы это или нет. Это грубо. diagnostics
также глупо использовать в производстве. Я бы порекомендовал использовать warnings
, а затем просто передал ваши предупреждения на splain
, если вам нужно объяснение.
Ответ 2
use diagnostics
замедлит выполнение вашего кода больше, чем use warnings
. Это нормально, если вы получаете предупреждение, которое не понимаете во время разработки, но лучше всего отключить его, когда закончите.
Ответ 3
Диагностика pragma - это инструмент разработки, который вам не нужен часто. Используйте его по мере необходимости:
$ perl -Mdiagnostics myprog
Включение прагмы в командной строке -M
switch означает, что вам не нужно забывать возвращаться и удалять тестовую версию, только use diagnostics
от вашего кода.
Ответ 4
Если вы еще не обновили версию perl версии 5.12, диагностика имеет ошибку, которая маскирует конкретное предупреждение. Исправлена ошибка в 5.12 (см. perl512delta):
диагностика больше не подавляется неинициализированного значения в диапазоне (или флип). [perl # 71204]
Как только я узнал об ошибке, я вернулся и прокомментировал use diagnostics;
из всего моего кода. Если я получаю предупреждающие сообщения, я раскомментирую их временно, но всегда возвращаюсь назад и прокомментирую это снова.