Principles in software design

Don’t repeat yourself (DRY)

Keep it simple, stupid(KISS)

Command–query separation(CQS) 

You aren’t gonna need it(YAGNI) 

Law of Demeter (LoD) or principle of least knowledge

SOLID (object-oriented design)

Hollywood Principle

High Cohesion & Low/Loose coupling

Convention over Configuration(CoC)

Separation of Concerns (SoC)

Design by Contract (DbC)

Acyclic Dependencies Principle (ADP)