Arbitrary abbreviations in phobos considered ridiculous
Steven Schveighoffer
schveiguy at yahoo.com
Fri Mar 9 15:39:25 PST 2012
On Fri, 09 Mar 2012 18:16:56 -0500, Brad Anderson <eco at gnuk.net> wrote:
> On Fri, Mar 9, 2012 at 3:56 PM, Jonathan M Davis
> <jmdavisProg at gmx.com>wrote:
>
>> On Friday, March 09, 2012 17:41:01 Steven Schveighoffer wrote:
>> > I'll say I *don't* agree with the rejection of aliases on principle --
>> > aliases can be extremely useful/helpful, and they cost literally
>> nothing
>> > (the "cognitive cost" on the docs is a BS argument IMO). I just don't
>> > agree with consuming so many common symbols for the sake of sugar.
>>
>> aliases need to have a really good argument for existing. If UFCS is
>> fully
>> implemented, then I think that there is _some_ argument for having stuff
>> like
>> hours and minutes, because then you can do stuff like 5.seconds()
>> (though
>> honestly, I really don't like the idea). The alias enables different
>> usages
>> rather than simply being another name for the same thing.
>>
>> Now, in this particular case, it's that much worse for exactly the
>> reason
>> that
>> you're against it: it uses common names for free functions. It's not as
>> big a
>> problem as it would be in C or C++, but it's still a problem. There's
>> also
>> some risk that it will break code.
>>
>>
> Oh, and I'd just like to add some of my experience to this. These names
> are
> used by Boost's datetime library and they've never been a problem for me
> and at work we make extensive use of Boost datetime. There is risk but I
> think in this specific case they are fairly small (especially in D, over
> C++).
I want to stress again the difference between C++'s namespaces, and D's
module import mechanism. In C++, you *deliberately* pull a namespace into
your scope (and usually only in the implementation file, which doesn't
affect any other implementation files), whereas in D, a standard "import
std.datetime" *automatically* pulls its namespace into your scope, and any
public imports it has made.
I've used boost's datetime. I didn't really like the whole "different
types for each unit" mechanism, but I used it with success, and was glad I
didn't have to re-invent it :) But then again, I used it as the original
date/time lib for my project.
-Steve
More information about the Digitalmars-d
mailing list