Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2007-06-06 10:58:14


on Wed Jun 06 2007, "Martin Bonner" <Martin.Bonner-AT-pi-shurlok.com> wrote:

> David Abrahams wrote:
>> "Emil Dotchevski" <emildotchevski-AT-hotmail.com> wrote:
>
>>> The more extensive the refactoring you're doing is, the more
>>> important it is for you to update often, so you don't deviate from
>>> everyone else's work too much.
>>
>> If that's true, it implies we have libraries with coupled
>> implementation details [, that] should never happen IMO
>
> Hmm. It's quite easy to depend by accident on implementation details.
> My favourite example is a component that doesn't document that it
> returns things in a particular order. However in version 1, for ease of
> implementation, it stores things in a std::map - and thus actually
> returns them in ascending order; in version 2 it upgrades to an
> unordered_map - and returns things in an arbitrary order. The result is
> that a dependant component breaks. The fault is in the dependant
> component (it relied on undocumentend behaviour), but finding that
> before the change can only be done by the most intensive code review
> (and extensive documentation).
>
> Having said all that, I agree that libraries with coupled
> implementation details should be avoided - but we need to cope with
> accidental coupling.

Probably. I only said "should," not "does" never happen. In any
case, it will be rare, and in the context of the discussion, if your
library depends on my implementation details, it deserves to break
when I update my library.

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk