Thoughts about modules

Sjoerd van Leent svanleent at gmail.com
Thu Jun 29 13:19:52 PDT 2006


Derek Parnell schreef:
> On Wed, 28 Jun 2006 08:18:40 +1000, Andrei Khropov 
> <andkhropov at nospam_mtu-net.ru> wrote:
> 
>> Bruno Medeiros wrote:
>>
>>> I'm betting he means being able to import a module in a way that it's 
>>> names
>>> (entities) are available only as fully-qualified names, and so the 
>>> base names
>>> are not "imported" to the importing module namespace/scope. It's the FQN
>>> import.
>>>
>>> Andrei, (and others) if you want to check out some previous 
>>> discussion on
>>> this matter:  
>>> http://www.digitalmars.com/d/archives/digitalmars/D/28423.html
>>
>> Yes, you're right.
> 
>> But anyway, as far as I can see Walter's opinion is unknown.
>>  Is he satisfied with the present situation?
> 
> I believe so.
> 
> The curent situation is a syntax shortcut. No one is prevented from 
> using FQN syntax, and in fact I try to use that form in my code, with 
> the main exception being 'writefln' of course ;-)
> 
> The benefit I can see from the shortcut form is that one can change 
> modules without having to change references to members in that module, 
> whereas with FQN usage one has to do a global find/replace over all your 
> source code.
> 
> The cost of not using FQN though is it does not keep well over time in 
> terms of reading the code and have an understanding of it. Plus you can 
> get caught out sometimes when introducing another import that causes 
> name clashes.
> 
> I'm not an advocate of either style of coding and I won't dictate to 
> others either on this matter. I have a preference, as my fellow coders 
> also have a preference, which may be different, and I'm okay with that.
> 
> Why do you think that FQN syntax is demonstrable better than the current 
> shortcut syntax?
> 
> --Derek Parnell
> Melbourne, Australia

The thing I'd see useful here would be:

import fb : foo.bar;

Indicates all methods from module "foo.bar" are in local namespace "fb"

import $ : foo.bar;

Would be the same as

import foo.bar : foo.bar;

Regards,
Sjoerd



More information about the Digitalmars-d mailing list