I'm an experienced programmer, trying to work my way to a point when I can one day assume responsibility over the code design of entire projects (medium sized, and some day even large ones...). I've already been responsible for design of partial modules, or very small projects. Been quite successful in both. I also have good knowledge of design patterns (both theoretical and practical... e.g. I've used all 23 patterns mentioned in the famous "Gang of Four", and can give interesting insights on them all, based on real-world experience. I've read about other patterns as well, including but not limited to J2EE patterns).
Still I get the feeling it's not enough... patterns are only part of the solutions. I suspect there are other important principals, that are not "design patterns"... like: how much to plan ahead (over-flexible code could be hard to maintain), how to tell if my design guarantees de-coupling between modules, how to tell if may API interface is not over complicated of other (beginner) programmers to use...
These are only examples... the point being, I'm looking for "overall" principals which are not "patterns". Is there any literature or web-sites on this ? Or is it only common-sense and experience ?
You have to learn the process of object oriented thinking. For instance API design will require that you define the interface with minimal number of parameters to the method. The public methods in a class must be minimal. There are other design principles that you need to understand in order to evaluate the different designs.
One of the best books on this topic is OO Design Heuristics by Arthur Riehl. Another good book is Object Thinking by David West published by Microsoft Press.
I second Stan's recommendation - "Agile Software Development" really is a must-read, in my opinion. (Be warned that there is another book of that name by Alistair Cockburn - which is also quite good, but about a slightly different topic...)
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Joined: Nov 13, 2002
thanks everyone for the useful replies
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com
subject: Literature about code design, which is above the obvious patterns ?