[Bioperl-l] Feature/Annotation rollback finished

Chris Fields cjfields at uiuc.edu
Thu Aug 30 03:54:05 UTC 2007


On Aug 29, 2007, at 10:44 PM, Florent Angly wrote:

> Hilmar Lapp wrote:
>> Keep in mind that code such as
>>
>> 	if ($ann) { ... }
>>
>> is mostly not b/c someone wanted to use overloading, but rather   
>> someone was lazy and really meant to say
>>
>> 	if (defined($ann)) { ... }
>>
>> In the absence of eq overloading, these will behave identically.  
>> So  if you leave the exceptions in it is sort-of policing lazy   
>> programmers, which I guess is fine in principle, but is guaranteed  
>> to  trip up a lot of script code. I'd take it out if you're  
>> reasonably  sure that at least within BioPerl itself those lazy  
>> programming  incidents are removed.
> 	if ($ann) { ... }
>
> and
> 	if (defined($ann)) { ... }
>
> are not the same.
>
> 	if ($ann)
>
> is evaluated false for an empty string like
>
>        $ann = '';
>
> and for a value of zero, i.e.
>
> 	$ann = 0;
>
> while
>
> 	defined($ann)
>
> returns true in these 2 cases.
>
> Florent

I agree, but we're talking about the context in which this test is  
performed, where $ann is either an instance of a Bio::AnnotationI or  
undef (not a scalar value or '').  In this case it works both as 'if  
($ann)' or 'if (defined($ann))', though the latter is preferred.   
Never underestimate laziness!

chris



More information about the Bioperl-l mailing list