Object Calisthenics Preventing Code Smells
Object calisthenics is a set of rules that help us avoid some code smells. If we decide to break the rules, we'll have consequences that materialize as code smells. In design, following rules is not always the best path; sometimes we need to bend or break rules. This is fine as long as we are conscious about it; namely, the consequences and the benefits. Software design should be a series of decisions. Our worst enemy is accidental complexity due to unconscious design decisions.
Quora: https://www.quora.com/What-are-essential-and-accidental-complexity.