Professional Documents
Culture Documents
Seja fcil de manter, adaptar e se ajustar s constantes mudanas exigidas pelos clientes;
Seja fcil de entender e testar;
Seja construdo de forma a estar preparado para ser facilmente alterado com o menor esforo
possvel;
Seja possvel de ser reaproveitado;
Exista em produo o maior tempo possvel;
Que atenda realmente as necessidades dos clientes para o qual foi criado;
Introduo ao SOLID
Os princpios SOLID para programao e design orientados a objeto so de autoria de Robert C.
Martin (mais conhecido como Uncle Bob) e datam do incio de 2000. A palavra SOLID um
acrstico onde cada letra significa a sigla de um princpio, so eles: SRP, OCP, LSP, ISP e DIP
Assim, toda vez que perceber que um mdulo ou classe comearam a mudar por
inmeras razes diferentes, no hesite, tome os passos necessrios para
respeitar a SRP, entretanto, no se deixe levar por ela, uma vez que otimizaes
prematuras podem enganar voc.
Princpio
do Aberto /
COTI Informtica
Fechado Escola de Nerds
2) Princpio do Aberto / Fechado
Extensibilidade
uma das chaves da orientao a objetos, quando um novo
comportamento ou funcionalidade precisar ser adicionado esperado
que as existentes sejam estendidas e e no alteradas, assim o cdigo
original permanece intacto e confivel enquanto as novas so
implementadas atravs de extensibilidade.
Criar cdigo extensvel uma responsabilidade do desenvolvedor
maduro, utilizar design duradouro para um software de boa qualidade e
manutenibilidade.
Abstrao
Quando aprendemos sobre orientao a objetos com certeza ouvimos
sobre abstrao, ela que permite que este princpio funcione. Se um
software possui abstraes bem definidas logo ele estar aberto para
extenso.
2) Princpio do Aberto / Fechado
O WardsWiki formula e responde a seguinte pergunta: Por que o Princpio da Substituio de Liskov
importante?
Porque se no, as hierarquias de classe seriam uma baguna. Pois podem ocorrer comportamentos
estranhos quando uma instncia da subclasse for passada como parmetro para um mtodo.
Porque se no, testes de unidade para a superclasse nunca teria sucesso para uma subclasse.
A soluo
Temos disponveis vrias tcnicas para resolver ou evitar o problema de violao do princpio de
Liskov, onde podemos usar alguns padres de projeto no nosso cdigo e principalmente o
Composition instead Inheritance (evite herana, prefira composio).
Princpio da
Segregao
COTI Informtica
de Interface Escola de Nerds
4) Princpio da Segregao de Interface
As interfaces podem ser divididas em grupos de mtodos, e cada grupo atende uma
conjunto diferentes de classes, cada classe pode implementar apenas as
funcionalidades que fazem sentido;
Uma dos indicadores para identificar a quebra deste principio no seguinte cenrio
voc ter uma interface com 4 funcionalidades porm ao implementar essa interface
em uma classe faz sentido todas os mtodos. Porm em outra classes uma
funcionalidade ou outra no faz sentido ser implementada.
4) Princpio da Segregao de Interface
Uma boa dica para evitar a quebra desse principio sempre que adicionar um
mtodo em uma interface, analise quem implementa essa interface e se
aquele mtodo faz sentido para todas as classes que implementam. Se tiver
sentido adicione nessa interface sem nenhum problema, caso no faa sentido
crie um outra interface(ou verifique se faz sentido em outra interface j
existente) para adicionar o mtodo que voc precisa implementar.
Este princpio refora que a abstrao est mais relacionada ao seu cliente do que ao
servidor (a classe que realiza a abstrao). No exemplo ilustrado acima, Dispositivo (a
abstrao) est diretamente ligado ao cliente (Botao). Sua implementao (Lampada)
um mero detalhe.
Outro exemplo bem comum deste padro est no uso do padro Repositrio. Neste
caso, aplicamos o DIP para que nosso domnio dependa de uma abstrao do
Repositrio, ficando totalmente isolado de detalhes sobre persistncia