SOLID

Single Responsibility Principle: Uma classe (ou módulo, função, etc) deve ter um e apenas um motivo para mudar

Open Closed Principle

Liskov Substitution Principle

Interface Segregation Principle

Dependency Inversion Principle

Princípios de Orientação a Objetos

Coesão:

  1. Cada classe deve ser responsável por apenas uma coisa, e deve executar esta tarefa muito bem.
  2. Classes não coesas tendem a crescer indefinidamente, o que as tornam difíceis de manter.

Encapsulamento:

  1. É uma forma de manter os objetos das nossas classes protegidos, fornecendo apenas o que é estritamente necessário para o mundo exterior.
  2. O fato de criar getters e setters para tudo, na verdade, quebra o encapsulamento da nossa classe.

Acoplamento: