This article discussed five principles for good OO programming design. Most of the principles involve adding a layer of abstraction between classes that would otherwise be dependent on each other, thus creating a loose coupling relationship resulting in less rigid and fragile code, which means easier maintainability and extensibility.
I recommend keeping in mind these principles when writing new code. See what principle or principles your code violates and how you can rework the code to adhere to the principles that were violated. You will end up with cleaner code that will make things easier as your code-base grows.