During the weekend I finally took some time to understand couple of the most important OO design principles. Until now, I’ve been just remembering pieces of this knowledge, but now I decided to really go into it. What I’m hoping is that I can come up with like a single sheet checklist to use if you get stuck or unsure about your class design.
Like said, the first step was to go trough and write down different principles, values etc that I remembered seeing somewhere. Head First Design Patterns has some great and easy-to-digest stuff about many principles and then there are the classic texts by Robert Martin. I also spent some time in wikis: Wikipedia has information of varying quality in it, but the original wiki was a true treasure chest.
I managed to collect a whole lot of notes… hopefully one day I can clean that stuff up. The big AHA moment came while I saw the Robert C. Martin principles called as SOLID: SRP, OCP, LSP, ISP, DIP. Finally I think I’ve nailed at least those five!