A Questionaire / Re: Bioperl: Parameter tag styl

Georg Fuellen fuellen@dali.Mathematik.Uni-Bielefeld.DE
Mon, 12 Jan 1998 23:04:23 +0000 (GMT)


[ If you have 5 minutes, please take a look at the following
questionaire on bioinformatics education:
http://oleander.TechFak.Uni-Bielefeld.DE:8080/distrain/    
Thanks a lot ! I'd be very grateful. ]

SteveC wrote,
...
> The first thing _rearrange() does is to strip off the hyphens from the 
> parameter tags and capitalize them, (so, in principle, I'm saving 
> _rearrange() the extra work!). But this brings up a good issue that I would 
> like your comments on. I decided to use ALL CAPS for named parameters for 
> these reasons:
> 
>   1) A naming conflict can occur if a module has a method with the same 
> name as a parameter. For example, if I call $fooObj->get(-file=>'readme')
> and module Foo.pm defines a sub file {...}, perl may generate a 
> warning that it interpreted the -file parameter name as -&file. I say 
> "may" because sometimes perl seems to do the right thing and interpret 
> -file as '-file'. But I have seen cases where this fails. I haven't 
> been able to pin-point why, though (any ideas?). 

Possibly -file is interpreted differently depending on whether
``file()'' is a function that returns a scalar, in contrast to a 
function that returns an array value ?!

SteveC wrote [in a followup mail]:
> A potential problem with my version occurs when _rearrange() is 
> called with a set of arguments which are not to be treated as named 
> parameters, yet the first arg is all cap:
> _rearrange('FOOVAL', 'barval') vs. _rearrange( FOO => 'fooval').
> But in practice this has not been a problem (famous last words:).
> 
> Perhaps it would be best to require all named parameters to begin with 
> a hyphen, all caps or not.

My feeling is that we should find out whether the odd behaviour 
(Perl interpreting -file=>'filename' as a function call to file())
is still present in 5.004 / the latest developers' release. If so,
we should find out whether it's considered a bug that will be fixed
in the next release. 

> SteveC
> 
> Side Note (and new issue!):
> 
> All of my modules inherit rearrange() from my Obj::Object.pm
> http://genome-www.stanford.edu/perlOOP/bioperl/lib/Obj/Object.pm
> 
> Note also that originally I removed the underscore from _rearrange() 
> since I considered this a protected method, not private. Traditionally in 
> perl, leading underscores are reserved for private methods. I haven't 
> discovered a perl convention for methods that are to be considered 
> protected. It may be best to also name these with leading underscores 
> since protected methods are not part of a class's public interface.
> 
> Consistent naming of private and protected methods would also facilitate 
> the operation of a module by itself or within an inheritance hierarchy, 
> as I am using PreSeq and UnivAln. Therefore, in the future I plan to use 
> leading underscores for protected as well as private methods (unless I 
> learn of a better perl convention or mechanism).

I agree on this, I hope I'm doing the same thing consistently.

best wishes,
georg

=========== Bioperl Project Mailing List Message Footer =======
Project URL: http://www.techfak.uni-bielefeld.de/bcd/Perl/Bio/
For info about how to (un)subscribe, where messages are archived, etc:
http://www.techfak.uni-bielefeld.de/bcd/Perl/Bio/vsns-bcd-perl.html
====================================================================