If your classes have broken one of following "rules", you should consider to refactor.
You are looking for SOLID, more detailed screencasts can be found here.
SRP: single responsibility principle, there should never be more than one reason for a class to change.
OCP: open closed principle, software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.
LSP: liskov substitution principle, functions that use references to base classes must be able to use objects of derived classes without knowing it.
ISP: interface segregation principle, clients should not be forced to depend upon interfaces that they do not use.
DIP: dependency inversion principle: