[Moscow.pm] Отключение warnings 'uninitialized'

Nikita Zubkov nikzubkov на gmail.com
Пт Окт 28 08:15:03 PDT 2011


Я не зря написал слово "ложных" в кавычках. С формальной точки зрения
эти срабатывания не ложные, но с т.з. логики приложение они ложные.

if( $a =~ /^[a-z]+$/ )

Если $a удовляетворяет регулярному выражению, то $a не может быть
undef. Зачем писать лишнюю проверку? Ладно, в данном случае я напишу
так:

if( $a && $a =~ /^[a-z]+$/ )

Ситуация хуже:

if( $a =~ /^[0-9]+$/ )

В данном случае проверять $a на истину уже не достаточно, так как '0'
- валидная строка. Нужно писать defined $a. В результате код пестрит
кучей ненужных частично дублирующих друг друга проверок, что ухудшает
читабельность кода. Пропустили проверку, получили в продакшене лог,
содержащий 90% варнингов и 10% полезной отладочной информации.

Одни расстройства.

28 октября 2011 г. 18:41 пользователь Alexandr Gomoliako
<zzz на zzz.org.ua> написал:
> On 10/28/11, Nikita Zubkov <nikzubkov на gmail.com> wrote:
>> Главная проблема у warnings 'uninitialized' и других схожих - огромное
>> количество "ложных" срабатываний.
>
> Каких еще ложных срабатываний? Есть пример?
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением,
Никита Зубков


Подробная информация о списке рассылки Moscow-pm