I'm wondering if you OO gurus would comment on what OO principles you think are most important for the aspiring OO developer? If you could only bring 5 (or so) principles with you to a desert island, which ones would you pick? Which are most foundational, or most commonly used?
True confession, right up front. I got the following list from objectmentor.com
ocp - open closed principle
lsp - liskov substitution principle
dip - dependency inversion principle
isp - interface segregation principle
rep - reuse/release equivalency principle
ccp - common closure principle
crp - common reuse principle
principles of package coupling
adp - acyclic dependencies principle
sdp - stable dependencies principle
sap - stable abstraction principle
I definitely don't think that this is the list I'd create, and I'm not convinced that this list is the superset of the list I'd create. (In other words some key principles might be missing from this list.)
Talk amongst yourselves
Bert