Seja um desenvolvedor melhor: Com SOLID

Hoje vou começar uma série sobre como se tornar um desenvolvedor melhor e desenvolver um código que vai te diferenciar dos demais.

E o primeiro assunto é: SOLID!!

But wait a minute …

O que é SOLID?

S.O.L.I.D é um acrônimo para os cinco primeiros princípios de design orientado a objetos criado por Robert C. Martin, popularmente conhecido como Uncle Bob.

Esses princípios, quando combinados, facilitam o desenvolvimento de software tornando o código mais fácil de ser ampliado(novas funcionalidades) e de realizar manutenção.

E o que significa cada letra?

S — Principio da Responsabilidade Única — Uma classe deve ter um único motivo para mudar, o que significa que uma classe deve ter apenas um trabalho.

O — Princípio Aberto-Fechado — Objetos ou entidades devem estar abertos para extensão, mas fechados para modificação.

L — Princípio da Substituição de Liskov — As classes derivadas devem ser substituíveis por suas classes base.

I — Princípio da Segregação da Interface — Muitas interfaces específicas são melhores do que uma interface única.

D — Princípio da inversão da dependência — Dependa de uma abstração e não de uma implementação.

Mas por que devo usar esses princípios?

O SOLID nos auxilia a obter excelentes benefícios da orientação a objeto:

  • Utilizando o princípio da responsabilidade única, temos códigos testáveis e de fácil entendimento;
  • Utilizando o princípio aberto-fechado, temos códigos de manutenção tranquila e de fácil extensão;
  • Utilizando o princípio de Liskov, temos códigos que fornecem bastante reaproveitamento (write less — delivery more);
  • Utilizando o princípio de segregação da Interface, temos códigos respeitando a responsabilidade única com isolamento de funcionalidades;
  • Utilizando o princípio da inversão de dependência, temos códigos com menor complexidade ciclomática, e abertos para extensão através da abstração;

Exemplos de uso:

Para ilustrar esse assunto, criei um projeto no github* com exemplos de um código utilizando os princípios(good) e um código não utilizando os princípios(bad).

The End

Fiquem à vontade para ajudar a ampliar esses exemplos no github e para me ajudar a melhorar esse pequeno artigo.

I will back with more!

*github link: https://github.com/JonathanF07/solid