Should I prefix package names with the name of my program?
Steven Schveighoffer
schveiguy at gmail.com
Mon Jan 28 22:07:35 UTC 2019
On 1/28/19 4:57 PM, Steven Schveighoffer wrote:
> On 1/28/19 3:16 PM, H. S. Teoh wrote:
>> On Mon, Jan 28, 2019 at 02:54:23PM -0500, Steven Schveighoffer via
>> Digitalmars-d-learn wrote:
>>> On 1/28/19 11:59 AM, Victor Porton wrote:
>>>> Should I prefix all module names with `xmlboiler.` (where XML Boiler
>>>> is the name of my program). These packages are expected to be used
>>>> internally by my program, not as an exported API (however there are
>>>> some little chances that in the future I will make a public API)
>>>
>>> I use a package nearly every time because if you don't, you run into
>>> weird quirks of the language for top-level modules.
>>
>> Really? Such as? I've never heard of said quirks.
>
> I'm trying to remember, but there are definitely conflicts with
> top-level modules that do not happen when packages are involved. Someone
> help me out here...
OK, so it's because top-level packages and modules imported are put into
the namespace. But modules under packages are not.
So for instance, if you have:
module a;
void a() {}
----
import a;
void main()
{
a(); // error can't call module a
}
whereas if a is changed to:
module pkg.a;
void a() {}
and the import changed to import pkg.a; then it works.
But this doesn't solve the problem of having a simple library/app with a
simple module name. What do you put it under? It can't be a.a, because
that doesn't help.
It really is a quirk of D that I don't like, the top level packages
should not conflict with other symbols in most cases.
-Steve
More information about the Digitalmars-d-learn
mailing list