50
S.O.L.I..D Principles Por Ismael Soares @ismaelsoaresz Agile Brazil 2012 domingo, 9 de setembro de 12

SOLID Principles

  • Upload
    ismael

  • View
    824

  • Download
    1

Embed Size (px)

DESCRIPTION

Apresentação sobre os princípios SOLID que fiz no Agile Brazil 2012 em São Paulo. Tenha orgulho do seu código. Aprenda SOLID! Os princípios SOLID são cinco princípios básicos de programação e design orientados a objeto, introduzidos por Uncle Bob no início de 2000. Aplicados em conjunto, estes princípios o tornarão um desenvolvedor diferenciado, capaz de escrever um código extensível, coeso e de fácil manutenção.

Citation preview

S.O.L.I..D PrinciplesPor Ismael Soares@ismaelsoaresz

Agile Brazil 2012

domingo, 9 de setembro de 12

SOLID são princípios básicos (boas práticas) da Programação Orientada a Objeto

domingo, 9 de setembro de 12

Não é exclusividade de nenhuma linguagem de programação

domingo, 9 de setembro de 12

Por que devo saber SOLID?

domingo, 9 de setembro de 12

Você precisa fazer a coisa certa do jeito certo!

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

SOLID

ingle responsibility Principle

pen/Closed

iskov Substitution Principle

nterface Segregation

ependency Inversion Principle

domingo, 9 de setembro de 12

Single responsability Principle

1

domingo, 9 de setembro de 12

Uma Classe deve possuir apenas um motivo para ser alterada, ou seja, possuir apenas uma responsabilidade.

Principle

domingo, 9 de setembro de 12

O que faz esta classe?

domingo, 9 de setembro de 12

Gera Frete e Ajusta o Contador e Obtem Nota e...

domingo, 9 de setembro de 12

Devemos separar as funcionalidades em classes distintas.

public class GeradorDeNotaFiscalDeFrete {}

public class AjustadorDeContadorDeNumeracaoDeNotaFiscal {}

public class ConsultaDeNotaFiscalService {}

...

domingo, 9 de setembro de 12

Porque quando você fizer uma alteração, vai procurar a classe responsável.

domingo, 9 de setembro de 12

Open/Closed

2

domingo, 9 de setembro de 12

Uma classe deve estar aberta para extensão, mas fechada para alteração

Principle

domingo, 9 de setembro de 12

Crédo... que diabos é isso?

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

Tem alguma coisa errada com este código?

domingo, 9 de setembro de 12

Como incluir uma nova Forma sem alterar o método que a desenha?

domingo, 9 de setembro de 12

Lascô...

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

Liskov Substitution Principle

3

domingo, 9 de setembro de 12

"Se você pode invocar um método q() de uma classe T (base), deve poder também invocar o método q() de uma classe T'(derivada) que é derivada com herança de T (base)."

Principle

domingo, 9 de setembro de 12

Agora Lascô de vez!

domingo, 9 de setembro de 12

Deve ser possível substituir uma classe base por uma classe derivada em qualquer ponto do código

domingo, 9 de setembro de 12

Uffa!Agora entendi...

domingo, 9 de setembro de 12

Exemplo

domingo, 9 de setembro de 12

Correto!

domingo, 9 de setembro de 12

Interface Segregation

4

domingo, 9 de setembro de 12

É melhor ter muitas interfaces específicasdo que ter uma interface genérica.

Principle

domingo, 9 de setembro de 12

Vamos ao exemplo...

domingo, 9 de setembro de 12

Seu gerente

domingo, 9 de setembro de 12

E lasquera a fábrica tá bondando!

domingo, 9 de setembro de 12

Correto!

domingo, 9 de setembro de 12

Correto!

domingo, 9 de setembro de 12

Dependency Inversion Principle

5

domingo, 9 de setembro de 12

Principle

Módulos de alto nível não devem depender de módulos de baixo nível, devem depender de abstrações.

domingo, 9 de setembro de 12

Tá... i dai?

domingo, 9 de setembro de 12

Abstrações não devem depender de detalhes, detalhes devem depender de abstrações.

domingo, 9 de setembro de 12

Exemplo

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

Quebrando o princípio

domingo, 9 de setembro de 12

Correto

domingo, 9 de setembro de 12

domingo, 9 de setembro de 12

Obrigado

domingo, 9 de setembro de 12