Import concerns revisited

Dave Dave_member at pathlink.com
Mon Jul 10 20:06:41 PDT 2006


Walter Bright wrote:
 > Dave wrote:
 >> I'm not sure what exactly Kris said, but imports are ubiquitous.
 >  > Not used as much as loops of course, but they are used in every 
program.
 >
 > Yes, they are ubiquitous. But the renaming of imported symbols? I'm 
not convinced that is at all ubiquitous, or that it is very desirable in 
any but unusual cases.

Because when libs. and the projects that use them get bigger it will 
probably get much more desirable, and not for just unusual cases.

For example, you can/have to use FQN in C# w/o an 'import', but through 
the 'using' directive can abandon the FQN:

System.Data.OleDb.OleDbCommand cmd = new 
System.Data.OleDb.OleDbCommand(...);

or

using System.Data.OleDb;
...
OleDbCommand cmd = new OleDbCommand(...);

and then:

using olecmd = System.Data.OleDb.OleDbCommand;
using odbcmd = System.Data.Odbc.OdbcCommand;
...
olecmd ocmd = new olecmd();
...
odbcmd dcmd = new odbcmd();

the last form is like the from / as syntax.

I like it - it can *really* cut down on the amount of superfluous code 
you have to write / scan / read for things like OleDbCommand, which are 
often used all over the place in a C# 'module'.

Because of the size of the .NET library, namespaces like 
'System.Data.OleDb' (or worse) are very uncommon.

 >
 >>  > 2) how much power it adds
 >>
 >> It adds the ability to import specific symbols - a quite powerful 
addition to import I think.
 >
 > But that power already exists. The discussion is now about whether 
two statements should be combined into one or not. The power is the same.

Yes but the proposed syntax also allows things like this:

import from a.very.popular.db.lib open as dbopen, close as dbclose;

rather than

import a.very.popular.db.lib;
alias a.very.popular.db.lib dblib;
alias dblib.open dbopen;
alias dblib.close dbclose;

Actually I think there is another criteria: 7) Does a feature build-in 
something useful or more convenient for large scale development that C 
and C++ don't have, or more importantly, Java and C# _do_ have.

The 'from' / 'as' syntax does that as well, again IMHO.

Walter, only you know how tough it is to implement. If it would be a 
total PITA to implement over 'static import' than I completely 
understand, especially at this stage.

- Dave



More information about the Digitalmars-d mailing list