Home
MySystem2.com
Orthogonality
"Orthogonality is a term borrowed from geometry. Two lines are orthogonal if they meet at right angles, such as the axes on a graph. In vector terms, the two lines are independent. Move along one of the lines, and your position projected onto the other doesn't change.
In computing, the term has come to signify a kind of independence or decoupling. Two or more things are orthogonal if changes in one do not affect any of the others.
... Non-orthogonal systems are inherently more complex to change and control.
gain productivity
- Changes are localized, so development time and testing time are reduced. It is easier to write relative small, self-contained components than a single large block of code.
- An orthogonal approach also promotes reuse.
- There is a fairly subtle gain in productivity when you combine orthogonal components. Assume that one component does M distinct things and another does N things. However, if the two components are not orthogonal. and you combine them, the result does M x N things. However if the two components are not orthogonal, there will be overlap, and the result will do less. You get more functionality per unit of effort by combining orthogonal components.
Reduce Risk
- Diseased sections of code are isolated.
- The resulting system is less fragile
- An orthogonal system will probably be better tested.
- You will not be tied as tightly to a particular vendor, product, or platform, because the interfaces to these third-party components will be isolated to smaller parts of the overall development.
Hunt, A. (2000). The Pragmatic Programmer. Addison-Wesley.
Connections