
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@pi-shurlok.com www.pi-shurlok.com