Import concerns revisited

Dave Dave_member at pathlink.com
Sun Jul 9 18:10:02 PDT 2006


kris wrote:
> Dave wrote:
>> Actually, how about:
>>
>> import from some.long.modid func as f1, abcd, efgh as zzz;
>> private import from this.other.cool.db.lib as dblib;
>>
>> Is more consistent w/ current syntax, maintains the visual continuity, 
>> allows more than one symbol import per module (w/o retyping the 
>> module), and combines the import w/ the alias if desired.
>>
>> - Dave
> 
> 
> Don't wish to belabour the point, but why the private attribute when 
> it's not really required?
> 

I missed that... You're right, no need for 'private'.

> Traditional import:
> 
> a - import lib.text.locale;
> 
> Safe import:
> 
> b - import lib.text.locale as locale;
> 
> 
> Selective safe import variations:
> 
> 1 - import from lib.text.locale Date, Time as myTime;
> 
> 2 - import lib.text.locale.Date;
>     import lib.text.locale.Time as myTime;
> 
> 3 - with lib.text.locale import Date, Time as myTime;
> 
> 
> If import consistency is deemed desirable, then #1 & #2 perhaps looks 
> like the most appropriate in that context? Although the latter seems 
> notably more verbose. Personally, I like your #1 due to the consistency 
> of the leading "import"
> 

I tend to forget things if I don't use a syntax (or a language) for a 
while; the more consistent things are the less I have to RTFM for 
something I've forgotten - just my preference. I think it'll probably be 
important for brand-newbies too, along with the aforementioned scanning 
code for imports.

The other part of it is that the C-lineage languages all start their 
'includes' with a verb, not a preposition, so #1 just feels more natural 
than #3.

> Whatever the outcome, daily usage should be simple to use and maintain, 
> obvious, and not tiresomely redundant -- we want to encourage the use of 
> the safe import.
> 
> ------------
> 
> Contrived illustration:
> 
> module lib.net.server.ftp;
> 
> import lib.io.file,
>        lib.text.convert.utf as utf;
> 
> import from lib.text.locale Date, Time;
> 
> 



More information about the Digitalmars-d mailing list