|
Boost : |
From: Martin Bonner (Martin.Bonner_at_[hidden])
Date: 2007-06-06 09:52:38
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.
-- Martin Bonner Project Leader PI SHURLOK LTD Telephone: +44 1223 441434 / 203894 (direct) Fax: +44 1223 203999 Email: martin.bonner_at_[hidden] www.pi-shurlok.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk