On Sun, Sep 11, 2011 at 2:37 PM, Gilles Sadowski < gil...@harfang.homelinux.org> wrote:
> Discussions on this list are sufficiently tense that we probably don't need > to have a flame war on OO. :-} > And I would hate to start that given that I think the discussions go too long in any case. > As for not being focused on the end user, I don't think that it is true. > Well, the recent discussion of exceptions for Cholesky decomposition was a great example. The suggestion was to throw an exception that basically said "one number that you have no idea of is less than another idea that is an obscure combination of stuff you input". The argument was that this was "more precise". The user centered exception is "you input was not positive definite". Another example comes from the random distributions. The current design separates generating values from evaluating CDF's even though users think of those as operations on the same object. Moreover, there is an intricate lattice of (unique) implementations and interfaces that the user has to figure out when all they want is a distribution. This isn't user centered design. And it doesn't facilitate improvement or back compatibility. Sometimes, it's so focused towards user applications that any other > consideration is overriden. > I can't remember such a case. > One of the dangers of only focusing on end-users is adding features > without > rhyme or reason; that will ultimately leads to unnecessarily complex and > consequently unmaintainable code, resulting in the death of the project, > with the consequence that the beloved user will be left with nothing. > That isn't user centered. User centered means implementing what the user actually needs and will use. Need and use of a function means that it has at least some reason. Rhyme comes from the design elements which cannot be forgotten. Adding frills and filips is the opposite of user centered design.