Another design principle that's struck me very firmly, particularly recently, is making things explicit. Make the code very explicitly say things...A dictionary is not explicit. A class, even though you have to do all the work writing in the member variables and accessors, is explicit. You can just look at that source code and know what data is present.