Top ones on my list
Rigid : The more rigid the architecture is, harder it is to change as very often an architecture has to adapt to changes and it might very well go much farther then it was initially designed for. When making a change in a component cascades changes in many more components, then we know we are in trouble. To break the rigidity always design to an interface, inject the dependencies, design the classes to do one thing and do it right so that they are enthrusted with single responsibility all the time. Follow the open-close principle keeping the pieces of architure which is going to change often (like configuration, data etc) from the ones which seldom changes.
Read the rest of this entry »