SOLID

The SOLID principles of Object Oriented Design include these five principles:

SRP - Single Responsibility Principle

OCP - Open/Closed Principle

LSP - Liskov Substitution Principle

ISP - Interface Segregation Principle

DIP - Dependency Inversion Principle

Generally, software should be written as simply as possible in order to produce the desired result.  However, once updating the software becomes painful, the software's design should be adjusted to eliminate the pain.  Often, these principles, in addition to the more generaly Don't Repeat Yourself principle, can be used as a guide while refactoring the software into a better design.

References

Agile Principles, Patterns, and Practices in C# - Hardcover, Amazon.com - Robert C. Martin, Micah Martin

Principles of Object Oriented Design - Pluralsight Online Training - Steve Smith