SOLID, DRY & KISS
Princípios de POO
Apresentação 3
Daniel Christofolli
SOLID
SOLID é um acrônimo dos cinco primeiros princípios da
programação orientada a objetos e design de código
identificados por
Robert C. Martin (ou Uncle Bob) por volta do ano 2000. O
acrônimo SOLID foi introduzido por Michael Feathers, após
observar que os cinco princípios poderiam se encaixar nesta
palavra.
S SRP Princípio da Responsabilidade Única
Uma classe deve ter um, e somente um, motivo para mudar.
O OCPPrincípio Aberto-Fechado
Você deve ser capaz de estender um comportamento de uma
classe, sem modificá-lo.
L LSP Princípio da Substituição de Liskov
As classes base devem ser substituíveis por suas classes
derivadas.
I ISP Princípio da Segregação da Interface
Muitas interfaces específicas são melhores do que uma
interface única.
D DIP Princípio da inversão da dependência
Dependa de uma abstração e não de uma implementação.
Single Responsibility Principle
Princípio da responsabilidade única
Uma classe deve ter uma responsabilidade bem definida
Exem
plo
de código
errado!
SRP - Código Errado
SRP - Código Bom
Open/Closed Principle
Princípio do aberto/fechado
Uma classe deve ser aberta para ampliação mas fechada
para modificação
OCP - Código Bom
Liskov Substitution Principle
Princípio da substituição de Liskov
Uma classe derivada deve ser substituível pela sua classe
base
As classes ArquivoWord e ArquivoPDF
são extensões da classe Arquivo, porém
não usam o polimorfismo
LSP - Código Ruim
A classe Quadrado herda da
classe Retangulo, porém,
sobrescreve o método que
calcula a área
LSP - Código Ruim
LSP - Código Bom
Interface Segregation Principle
Princípio da Segregação de Interface
Muitas interfaces específicas são melhores do que
uma interface geral.
Uma interface deve ser enxuta, com poucos
comportamentos
Código ruim, pois está usando a interface
da forma errada
ISP - Código Ruim
ISP - Código Bom
Dependency Inversion Principle
Princípio da inversão de dependências
Devemos “depender de abstrações e não de classes
concretas”.
● “Módulos de alto nível não devem depender de
módulos de baixo nível.”
● “As abstrações não devem depender de detalhes.
Os detalhes devem depender das abstrações.”
DIP - Código Ruim
DIP - Código Bom
DRY
Do not Repeat Yourself
● Cada parte do conhecimento deve ter uma representação
única, não ambígua e definitiva dentro do sistema.
● Menos código é bom: economiza tempo e esforço, é fácil
de manter e também reduz as chances de erros.
DRY - Código Ruim
DRY - Código Bom
KISS
Keep It Simple, Stupid
Vantagens:
● Você será capaz de resolver mais problemas e com ainda mais eficiência;
● Você será capaz de produzir scripts que resolvem problemas complexos com
poucas linhas de código;
● Seus códigos terão muitos mais qualidade;
● Você será capaz de construir grandes sistemas fáceis de manter;
● Sua base de código será mais flexível, fácil para estender, modificar ou
refatorar quando novas funcionalidades forem solicitadas;
● Você será capaz de produzir mais do que já imaginava como um developer;
● Você será capaz de trabalhar em grandes grupos de desenvolvimento e em
grandes projetos desde que todos mantenham os códigos estupidamente
simples.
KISS
Keep It Simple, Stupid
Resumo
Os melhores algoritmos são muitas vezes aqueles com
poucas linhas de código. E quando lemos o código linha a
linha, podemos facilmente entender o que está sendo feito. A
inovação consiste em quebrar o problema cada vez mais em
problemas menores a ponto de eles ficarem muito fáceis de
entender e implementar. Muitos dos grandes solucionadores
de problemas de códigos não são excelentes codificadores,
mas eles ainda produzem um excelente (simples) código.
KISS - Código Ruim
KISS - Código Bom
Conclusão
Se usarmos esses princípios, teremos um código
fácil de se manter, testar, reutilizar, estender e
evoluir.

Princípios de Programação Orientada a Objetos Solid, dry e kiss

  • 1.
    SOLID, DRY &KISS Princípios de POO Apresentação 3 Daniel Christofolli
  • 2.
    SOLID SOLID é umacrônimo dos cinco primeiros princípios da programação orientada a objetos e design de código identificados por Robert C. Martin (ou Uncle Bob) por volta do ano 2000. O acrônimo SOLID foi introduzido por Michael Feathers, após observar que os cinco princípios poderiam se encaixar nesta palavra.
  • 3.
    S SRP Princípioda Responsabilidade Única Uma classe deve ter um, e somente um, motivo para mudar. O OCPPrincípio Aberto-Fechado Você deve ser capaz de estender um comportamento de uma classe, sem modificá-lo. L LSP Princípio da Substituição de Liskov As classes base devem ser substituíveis por suas classes derivadas. I ISP Princípio da Segregação da Interface Muitas interfaces específicas são melhores do que uma interface única. D DIP Princípio da inversão da dependência Dependa de uma abstração e não de uma implementação.
  • 4.
    Single Responsibility Principle Princípioda responsabilidade única Uma classe deve ter uma responsabilidade bem definida
  • 5.
  • 6.
  • 7.
    Open/Closed Principle Princípio doaberto/fechado Uma classe deve ser aberta para ampliação mas fechada para modificação
  • 8.
  • 9.
    Liskov Substitution Principle Princípioda substituição de Liskov Uma classe derivada deve ser substituível pela sua classe base
  • 10.
    As classes ArquivoWorde ArquivoPDF são extensões da classe Arquivo, porém não usam o polimorfismo LSP - Código Ruim
  • 11.
    A classe Quadradoherda da classe Retangulo, porém, sobrescreve o método que calcula a área LSP - Código Ruim
  • 12.
  • 13.
    Interface Segregation Principle Princípioda Segregação de Interface Muitas interfaces específicas são melhores do que uma interface geral. Uma interface deve ser enxuta, com poucos comportamentos
  • 14.
    Código ruim, poisestá usando a interface da forma errada ISP - Código Ruim
  • 15.
  • 16.
    Dependency Inversion Principle Princípioda inversão de dependências Devemos “depender de abstrações e não de classes concretas”. ● “Módulos de alto nível não devem depender de módulos de baixo nível.” ● “As abstrações não devem depender de detalhes. Os detalhes devem depender das abstrações.”
  • 17.
  • 18.
  • 19.
    DRY Do not RepeatYourself ● Cada parte do conhecimento deve ter uma representação única, não ambígua e definitiva dentro do sistema. ● Menos código é bom: economiza tempo e esforço, é fácil de manter e também reduz as chances de erros.
  • 20.
  • 21.
  • 22.
    KISS Keep It Simple,Stupid Vantagens: ● Você será capaz de resolver mais problemas e com ainda mais eficiência; ● Você será capaz de produzir scripts que resolvem problemas complexos com poucas linhas de código; ● Seus códigos terão muitos mais qualidade; ● Você será capaz de construir grandes sistemas fáceis de manter; ● Sua base de código será mais flexível, fácil para estender, modificar ou refatorar quando novas funcionalidades forem solicitadas; ● Você será capaz de produzir mais do que já imaginava como um developer; ● Você será capaz de trabalhar em grandes grupos de desenvolvimento e em grandes projetos desde que todos mantenham os códigos estupidamente simples.
  • 23.
    KISS Keep It Simple,Stupid Resumo Os melhores algoritmos são muitas vezes aqueles com poucas linhas de código. E quando lemos o código linha a linha, podemos facilmente entender o que está sendo feito. A inovação consiste em quebrar o problema cada vez mais em problemas menores a ponto de eles ficarem muito fáceis de entender e implementar. Muitos dos grandes solucionadores de problemas de códigos não são excelentes codificadores, mas eles ainda produzem um excelente (simples) código.
  • 24.
  • 25.
  • 26.
    Conclusão Se usarmos essesprincípios, teremos um código fácil de se manter, testar, reutilizar, estender e evoluir.