in reply to (OT) On Orthogonality
All right! This is one of my favourite topics -- thanks demerphq for giving me the chance to pontificate a bit.
In some sense, I'd say that orthogonality, in software engineering terms, is very close to the mathematical definition: a software component is orthogonal to a set of (other) components when it does something that none of the others does, without duplicating any functionality already present in the set. (If you want to get really geeky, its "capability vector" is normal to that of each other component in the set.)
I think that's a good starting place, but it's too rigid. More pragmatically, two components are orthogonal when they perform different (but possibly related, and possibly overlapping) tasks, have no dependencies on each other (you can call foo() before bar(), or bar() before foo(), or just call bar() and not worry about foo()). So my orthogonal set now consists of components that do one well-defined thing, do it well, and have no external dependencies. The point here is that you can pick the tool that you need without having to pick any others.
A good indicator for orthogonal code is when you're writing a program, think "I have code to do that", find the existing code, and start using it in your new program without modifying it. If you have to tweak the interface a bit, or include another function that doesn't solve your problem, or otherwise bring extra crap to the table, your code isn't orthogonal.
Update: I'm not tilly. But I wish him luck. :-)
--
Good luck to you, tilly
:wq
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: (FoxUni) Re: (OT) On Orthogonality
by sfink (Deacon) on Apr 16, 2002 at 22:39 UTC | |
by demerphq (Chancellor) on Apr 17, 2002 at 10:01 UTC | |
by Anonymous Monk on Apr 17, 2002 at 15:45 UTC | |
by demerphq (Chancellor) on Apr 17, 2002 at 16:31 UTC |