Principles
DRY
Don't Repeat Yourself.
The DRY principle emphasizes importance of modularity and reusable code. But
KISS
Keep it simple stupid.
As a developer you should not run away from complexity, but you should not run towards it either.
There is very little value to a code which no one understands, but which follows all the "object oriented" or coding principles.
I have noticed myself modularizing a lot of times just because it gets complex at a dev stage. Complexity at dev stage is still ok. Its much more difficult to deal if you don't understand your code later.