Your code wants to tell you something. It knows how it wants you to design it. Learn with J. B. Rainsberger how to listen to your code.
Go beyond programming and design at
archive / mobile / feed / random / discuss
A model for improving the names of variables, fields, interfaces, classes and namespaces in a system. Practise this and more in my course, Agile Design: Beyond the Basics.