32
S O L I D Happy Hour SOLID

Princípios SOLID

Embed Size (px)

DESCRIPTION

Apresentação para equipe de engenharia do Peixe Urbano sobre "SOLID Principles".

Citation preview

S O L I D

Happy Hour

SOLID

S O L I D

Edmilson Lani

• Desenvolvedor.• Capixaba residente no

Rio de Janeiro.• Pouco mais de 1 ano de PU.• Time de App Services.• Flamengo.• www.flamengorj.com.br

S O L I D

Fato

• Fazer software NÃO é fácil.• Fazer software bem projetado para

ser mantido é ainda mais complicado.

S O L I D

Perigo

• Orientação a Objeto mal inplementada é igual ao paradigma procedural.

S O L I D

Ufa!

• Não é necessário ser nenhum gênio.Mas...• Como profissionais temos

obrigação de estudar constantemente.

S O L I D

Boas práticas

• Design pattern• Princípios de design

S O L I D

SOLID Principles

Single responsibility

Open/closed

Liskov substitution

Interface segregation

Dependency inversion

SOLID

S O L I D

O que é?

• Robert C. Martin (“Uncle Bob”) • Início dos anos 2000• Conjunto de boas práticas

Curiosidade: O termo SOLID não foi inventadopor Uncle Bob.

S O L I D

SRP

Princípio da Responsabilidade Única“Nunca deve haver mais do que uma razão para

uma classe de mudar”

S O L I D

SRP – Seja curioso

- “Classe, o que você faz?”(a pergunta pode ser feita a método também)

S O L I D

SRP - Benefícios

Mudanças vão acontecer• Menos responsabilidade, menos dificuldade• Baixo acoplamento• Facilidade de leitura do código

S O L I D

SRP – Código ruim

S O L I D

SRP – Código bom

S O L I D

OCP

Princípio do Aberto/Fechado“Entidades de software (classes, módulos,

funções, etc) devem ser abertas para extensão, mas fechadas para modificação”

Bertrand Meyer

S O L I D

OCP - Benefícios

• Evolução sem medo• Não criar bugs em código que funciona

S O L I D

OCP - Patterns

• Strategy Pattern • Decorator Pattern

S O L I D

OCP - Exemplo

S O L I D

LSP

Princípio da Substituição de Liskov“Deve ser possível substituir uma classe base

por suas classes derivadas”

Barbara Liskov e Jeannette Wing

S O L I D

LSP - Dúvida

Quadrado herda de retângulo?

S O L I D

LSP - Exemplo

S O L I D

ISP

Princípio de Segregação de Interface“Clientes não devem ser forçados a depender de

interfaces que eles não vão usar”

S O L I D

ISP – Já viu isso?

OBS.: Espero que pelo menos nãotenha sido no Internet Explorer

throw new NotImplementedException();

S O L I D

ISP - Benefícios

• Facilitar a implementação de interfaces.• Ter interfaces mais específicas (SRP, certo? ).

S O L I D

ISP - Código ruim

S O L I D

ISP - Código bom

S O L I D

DIP

Princípio de Inversão de Dependência“Módulos de alto nível não deve depender de

módulos de baixo nível. Ambos devem depender de abstrações.”

“Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.”

S O L I D

DIP - Benefícios

• Sistema desacoplado e flexível.• Código testável.• Facilidade de mudança.

S O L I D

DIP - Código ruim

S O L I D

DIP - Código bom

S O L I D

Guideline

• Princípios e padrões são itens de boas práticas.

• Avaliar a situação antes de aplicar.• Prós e contras.

S O L I D

Referências

• Wikipedia: http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

• Blog Vinícius Quaiato: http://viniciusquaiato.com/• Blog Lambda3: http://blog.lambda3.com.br• .Net Architects Podcast: http://podcast.dotnetarchitects.net

S O L I D

Dúvidas / Debate