dcollections 1.0 and 2.0a beta released
Robert Jacques
sandford at jhu.edu
Thu May 20 09:46:59 PDT 2010
On Thu, 20 May 2010 06:34:42 -0400, Steven Schveighoffer
<schveiguy at yahoo.com> wrote:
> Robert Jacques Wrote:
>
>> On Wed, 19 May 2010 21:42:35 -0400, Steven Schveighoffer
>> >
>> > Does that make sense?
>> >
>> > -Steve
>>
>> Yes and No. I understand where your coming from, but I think it's a bad
>> idea. First, I think it needlessly expands the radius of comprehension
>> needed to understand and use the library. (See Tangled up in tools
>> http://www.pragprog.com/magazines/2010-04/tangled-up-in-tools) Second, I
>> think designing a library to be flexible enough to meet some future,
>> anticipated need (e.g. dlls) is a good idea, but actually implementing
>> vaporous future needs is fraught with peril; it's too easy to guess
>> wrong.
>> Third, interface base design is viral; If library X uses interfaces
>> then I
>> have to use interfaces to interface with it. And if another library Y
>> uses
>> classes, then I'm going have to write a (needless) wrapper around one of
>> them.
>
> I understand these points, but I'm already using interfaces to copy data
> between containers. I don't have to, I could have used generic code,
> but this way, only one function is instantiated to copy data from all
> the other containers. The problem with using generic code is that the
> compiler will needlessly duplicate functions that are identical.
This sounds like a failure of design. Why aren't you using ranges to do
this?
> Using interfaces is not as viral as you think. My interfaces can be
> used in generic code, as long as the generic code uses functions in the
> interfaces. If a library returns an interface, the author is saying "I
> don't want you using any functions outside this interface," so why is
> that a bad thing?
Well, needlessly duplicated functions for one. :) More importantly, the
example I gave was about third party libraries which I have no control
over. So this solution explicitly doesn't work. And even if everyone used
templates everywhere in order to be compatible with both interfaces and
classes, isn't that a viral effect of having both?
> Forcing people to *not* use interfaces has its drawbacks too.
> Dcollections gives the most flexible design I could muster, while still
> being useful.
>
> I'm not saying I'm against removing the interfaces until some later
> date, but I don't see any convincing arguments yet, especially since
> I've already seen benefits from having them.
>
> -Steve
More information about the Digitalmars-d-announce
mailing list