Module naming conventions
Christopher Wright
dhasenan at gmail.com
Mon Nov 19 06:16:12 PST 2007
Don Clugston wrote:
> Walter Bright wrote:
>> Bill Baxter wrote:
>>> Is this list complete?
>>>
>>> Convention LC: All package module names are lower case all the time.
>>> Example: import foo.bar.baz;
>>> Pros:
>>> *) Long established convention (~10 years) used by Phobos
>>>
>>> *) Differentiates module names from class names.
>>> Like class "Stream" in module "std.stream
>>>
>>> *) Related: prevents redundancy in fully qualified names
>>> (std.stream.Stream, not std.Stream.Stream)
>>>
>>> *) Easy-to-remember rule ("just use lowercase") prevents naming errors
>>> slipping through the cracks on case-agnostic Windows.
>>
>> This is not a big issue, but an irritation: sometimes, I see code
>> developed on windows that names a file like: "Foo.h", but then
>> #include's it with "foo.h". It all works fine until one tries to port
>> the code to Linux. Worse, sometimes you'll see the reverse problem,
>> where there's a Foo.c and a foo.c on Linux and you have to port it to
>> windows.
>> Having all file/module/package names in lower case is just a
>> no-brainer way to avoid this issue.
>>
>> I'll also confess I just don't like filenames with caps, underscores,
>> or special characters in them, nor do I like long filenames. I have
>> some image programs that insist on writing out .JPG files, and if I
>> forget to rename them to .jpg before ftp'ing them to the web server,
>> they don't work. Using all lower case, simple filenames, minimizes
>> problems moving the files between systems.
>>
>> I'm surprised nobody has asked why D doesn't simply enforce module
>> names to be in all lower case <g>.
>
> You could prohibit the use of module names differing only in case.
>
> So that if one module has
> import foo.bar;
> and another has
> import foo.Bar;
> an error should be generated, even if the file(s) would be found on that
> OS.
> The correct capitalisation should be obtained from the module statement.
> (And even on Windows, you _could_ still check to see if the file case
> matches the module statement).
Taking the opposite approach -- explicitly ignoring capitalization, even
if the filesystem in case sensitive -- will eliminate discussions of
this nature, on the other hand, will strongly encourage people using
case-sensitive filesystems to not have modules whose names differ only
in case, and will probably take less code than your recommendation.
I don't see either one happening in the near future, though.
More information about the Digitalmars-d
mailing list