Apresentação - Single responsability principle

9
Single Responsability Principle Marcelo Nascimento Thiago Funghi Thiago Ribeiro

Transcript of Apresentação - Single responsability principle

Page 1: Apresentação - Single responsability principle

Single Responsability Principle

Marcelo NascimentoThiago FunghiThiago Ribeiro

Page 2: Apresentação - Single responsability principle

SRP - Nada de Classes Jack Bauer...

Mas isso é impossível quando temos Classes realizando um milhão de tarefas...

Sabemos que OO sugere reuso, extensibilidade e manutenabilidade.

Page 3: Apresentação - Single responsability principle

SRP - Apenas uma razão para mudar...

Nunca deve existir mais de uma razão para uma classe mudar

Muitas Razões Para Mudar = Muitas Razões Para Ter Erros

Page 4: Apresentação - Single responsability principle

SRP - Ou seja...

Cada Classe deve fazer SÓ o SEU trabalho Sujo

Page 5: Apresentação - Single responsability principle

SRP - Dicas

5. Se vários métodos compartilham parâmetros, promova-os a variáveis de instância

1. Identifique as responsabilidades da classe

4. Se as camadas superiores podem fornecer informações, faça, não carregue tudo na classe “canivete suíço”

3. Extraia uma classe para isolar métodos que devem permanecer juntos

2. Extraia métodos para isolar as responsabilidades

Page 6: Apresentação - Single responsability principle

SRP - Na Prática

Métodos:Area() - Calcula a área do Retângulo usando um modelo matemático;Desenhar() - Desenha o Retângulo usando uma interface gráfica;

DUAS RESPONSABILIDADES!!!qualquer mudança no modelo matemático pode impactar na

interface gráfica e vice-versa..

Page 7: Apresentação - Single responsability principle

SRP - Na Prática

Separando as responsabilidades

Page 8: Apresentação - Single responsability principle

SRP - Conclusões

1.  Se uma classe possuir mais de uma responsabilidade, deve-se considerar sua decomposição em duas ou mais classes;

3.  Cada responsabilidade é um eixo de mudança e as fontes de mudança devem ser isoladas;

2.  Baseado no princípio da coesão funcional, uma classe deve ter uma única responsabilidade;

Este princípio é um dos mais simples de entender, mas muito difícil de ser colocado em prática.... É natural agrupar responsabilidades...(Object Mentor)

Page 9: Apresentação - Single responsability principle

SRP - DÚVIDAS?