domingo, 4 de setembro de 2016

Orientação a objetos, você conhece bem?

Programadores hoje tendem a se maravilhar muito com as tecnologias que estão na modinha, mas não se preocupam em aprender e solidificar o conhecimento no básico, em escrever código bem feito, testável e de fácil reuso. Irei apresentar vários conceitos nesse artigo que serão atualizados de acordo com o meu tempo disponível.

SOLID é um acrônimo para os principais conceitos que todo programador deveria conhecer para não fazer "cagadas" no código fonte.

S - Single responsibility principle
Uma classe deveria ter apenas uma responsabilidade. Classes com uma única responsabilidade são mais fáceis de racionar sobre, mais fáceis de testar, mais fáceis de serem reutilizadas e mais fáceis para se realizarem manutenção pois ela irão modificar por apenas um motivo.

O - Open/closed principle
Uma classe deveria ser aberta para extensões e fechada para modificações. Quer dizer que podemos modificar um comportamento de uma classe sem mexer em uma única linha de código fonte, e como faríamos isso? Utilizando abstrações ao invés de implementações.

L - Liskov substitution principle 
Uma classe poderia ser substituída por outra classe sem gerar um comportamento inesperado. Principio mais utilizado quando estamos usando herança, e uma classe filha sobrescreve um método na classe pai e lança uma exceção por exemplo.

I - Interface segregation principle 
Assim como uma classe deveria ser coesa, interfaces também devem se atentar a coesão. Interface com muitos métodos que trazem muitas responsabilidades as classes, faz com que o princípio "Single Responsability Principle" quebrar.

D - Dependency inversion principle 
Uma classe deveria depender de abstrações ao invés de implementações. Isso está bem relacionado com o Open/closed principle, onde uma classe deveria ser aberta para extensões. Abstrações tendem a ser mais estáveis do que implementações, por isso a ideia seria receber através do construtor dessa classe uma abstração, essa abstração poderá transformar completamente o comportamento da classe sem alterar nenhuma linha de código. Outra questão importante é nunca instanciar as implementações dentro da classe e sim sempre recebe-las através do construtor.

Artigo terá mais atualizações.

Mais informações:
SOLID - Wikipedia
Functional programming is cool, but you know OO ? (Vídeo)

Nenhum comentário:

Postar um comentário