When you ask people what they consider to be good software design, they often say that the design has to be beautiful and elegant. It's the aesthetic nature of a good design that allows you to tell that it's good. I find that although good designs often do have a certain beauty to them, they are good designs for much different reasons. Good designs allow you to maintain your code. In a good design, you can make changes easily without affecting the rest of the system - in other words, it doesn't exhibit rigidity. In a good design, changing code doesn't incur a high risk that something else will break - in other words, it doesn't exhibit fragility. In a good design, the designer's intentions are clearly expressed by the code itself and the code is easy to read. All of these factors lead to a beautiful design, but the important aspect of a beautiful design is that it allows you to continue developing the application more easily.
Download