[Moscow.pm] Отключение warnings 'uninitialized'
Ilya Chesnokov
chesnokov.ilya на gmail.com
Пт Окт 28 06:35:54 PDT 2011
28 октября 2011 г. 17:22 пользователь Alexandr Gomoliako
<zzz на zzz.org.ua> написал:
>> В ответах уже проскакивал например, что баги ловит - я согласен.
>
> Про баги это неправда. Я уже почти год пользуюсь с выключенными
> uninitialized, никаких проблем.
Это как в той цитате с баша про вирусы:
(звонок админу городской сети):
- у вас вирусы по локалке гуляют!
- достали вы со своим Касперским, поставьте нод, он их не видит!
Банальный пример полезности предупреждения об uninitialized value
(заодно и пожалуюсь).
Недавно Яндекс.Деньги и изменили регистр символа в уведомлении о
принятом платеже.
В результате в хеше параметров значением $p->{CustomerNumber} был
undef -- и при подсчёте контрольной суммы она не сходилась с
эталонной, и мы не принимали платёж. Это продолжалось некоторое время,
после чего проблему обнаружили и исправили.
На следующий же день пришло автоматическое письмо со списком
варнингов, случившихся за прошедший день, в числе которых был и этот
варнинг с "use of uninitialized value" в ключе хеша.
Если бы у нас не было относительно много платежей по Яндекс.Деньгам в
течение дня, и мы не заметили бы эту проблему раньше, то вполне
возможно, заметили бы её только на следующий день -- когда увидели бы
её в списке варнингов. Если же 'use of uninitialized value' было бы
отключено, могли бы очень долго не замечать этот баг.
>> какие есть не аргументы "против", а аргументы "за"?
>
> Чистота кода. Пример:
> if ($r->{foo} > 100)
> вместо
> if ($r->{foo} =~ /^\d+$/ && $r->{foo} > 100)
тут скорее: if ( $r->{foo} && $r->{foo} > 100 )
> Аналогично с кучей ненужных инициализаций, вложенными хэшам и т.д.
> В целом читабельность повышается очень сильно.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
--
Best regards,
Ilya Chesnokov
Подробная информация о списке рассылки Moscow-pm