Phango
Lars Ivar Igesund
larsivar at igesund.net
Sun Nov 18 12:28:05 PST 2007
Bill Baxter wrote:
> torhu wrote:
>> Lars Ivar Igesund wrote:
>> >> Mixed case package/module names are avoided because there needs to be
>> >> a
>>>> 1:1 correspondence between file names and package/module names, and not
>>>> all file systems are case sensitive (like FAT32 and NTFS, for a couple
>>>> widely used examples).
>>>
>>> As I said elsewhere in the thread, other FS _are_ case sensitive, and
>>> thus
>>> you need to be aware of which case you use in either case, rendering the
>>> argument moot. Early on in D history, I encountered several cases of
>>> modules being saved on Windows, then not working on Linux with their
>>> intended module names due to this. And this can only happen if the
>>> Windows
>>> programmer typed in a file name with upper case letters, even though the
>>> module name was all lower case.
>>>
>>
>> I believe Walter's point is that "all package and module names are lower
>> case" is a simple rule that will help us avoid this problem, given that
>> everyone does their best to adhere to the rule. I don't know how much
>> it matters, since I've never run into the problem myself. But I just
>> tried it, and it shouldn't be hard to track down the problem based on
>> the compiler's error messages. Not a big deal either way, it seems.
>
> There is another issue. Often a module has basically only one main
> class in it. If the main class is called Foo, and that's all that's in
> the module, some version of "Foo" is the logical name for the package
> too. But then if you use fully qualified names you end up with
> Package.Foo.Foo when referring to the class in the module, which just
> look *so* silly that it's easy to forget the second Foo. But
> package.foo.Foo looks more reasonable, since it's clear the second to
> last "foo" is not a class name.
>
> --bb
Using fully qualified class names are very seldom necessary in D, I find
using renaming imports are much more useful. I'd like to turn your argument
the other way round: If you do
import package.Foo;
then it make a lot of sense that you can just use your class Foo. I
understand that this may have been uncommon for those coming from C, but I
know of several C++ libraries (Object oriented) using header files with
capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't
always this way, but changed with version 4. OI I think always did this,
and it is 15+ years old. Indeed, its top level package is "Inventor"!
FWIW, I think SGI and TrollTech is two of very few companies that have
created truly good library API's in C++.
I could of course also pull in Java and C# as examples, but those are
weirdly enough disregarded in this debate.
--
Lars Ivar Igesund
blog at http://larsivi.net
DSource, #d.tango & #D: larsivi
Dancing the Tango
More information about the Digitalmars-d
mailing list