Есть ли проблема с «использовать диагностику»? - PullRequest
13 голосов
/ 18 июня 2011

С perl я почти всегда использую:

use strict;
use diagnostics;

Я предложил "использовать диагностику" вместо use warnings; здесь , и я получил некоторые отрицательные отзывы.Итак, теперь я думаю:

Есть ли проблемы с use diagnostics;?

Ответы [ 4 ]

17 голосов
/ 18 июня 2011

diagnostics не лексическая прагма, как warnings. Вместо этого он устанавливает глобальную переменную $^W (например, с использованием флага -w), которая включает предупреждения для всего кода, независимо от того, хочет он этого или нет, и независимо от того, написали вы его или нет. Это довольно грубо. diagnostics также глупо использовать в производстве. Я бы порекомендовал использовать warnings, а затем просто передать ваши предупреждения на splain, если вам нужно объяснение.

9 голосов
/ 18 июня 2011

use diagnostics замедлит выполнение вашего кода более чем на use warnings.Это нормально, если вы получаете предупреждение, которое вы не понимаете во время разработки, но лучше выключить его, когда вы закончите.

8 голосов
/ 18 июня 2011

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

$ perl -Mdiagnostics myprog

Включение прагмы с помощью командной строки -M switch означает, что вам не нужно забывать возвращаться и удалять только кодовую строку use diagnostics из своего кода.

0 голосов
/ 20 июня 2011

Если вы еще не обновились до версии 5.12 perl, диагностика содержит ошибку, которая маскирует конкретное предупреждение.Ошибка была исправлена ​​в 5.12 (см. perl512delta ):

диагностика больше не подавляет использование неинициализированного значения в предупреждениях диапазона (или переворачивания).[perl # 71204]

Как только я узнал об ошибке, я вернулся и прокомментировал use diagnostics; из всего моего кода.Если я получаю предупреждающие сообщения, я временно раскомментирую его, но всегда возвращаюсь и комментирую снова.

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