Hangout OOD - Princípio
Open/Closed
11/06/2014
Participantes:
• João Batista Neto – Hoster
• Daniel Ribeiro - Moderador
• Priscila Mayumi Sato – Slides
• Ivo nascimento ...
Pauta
• Repassar o que foi discutido no hangout passado e apontar o link
para a gravação.
• Abordar, com profundidade e ex...
Princípio de design S.R.P.
BREVE REVISÃO DO ÚLTIMO HANGOUT
HTTPS://WWW.YOUTUBE.COM/WATCH?V=NY3W2QT0LU0&LIST=PLRX4OTWY_G7
M...
Princípio Open/Closed
Princípio Open/Closed
• “Nem sempre a coisa pressuposta é eternamente
aquilo planejada, e como a classe não foi feita para...
Princípio Open/Closed
• “OCP e SRP não são dependentes um do outro, um
código pode ter 3 responsabilidades e mesmo assim
n...
Princípio Open/Closed
• “Quando você vê os dois princípios (SRP e OCP)
aumenta a qualidade do código, seguir SRP diminui a...
Princípio Open/Closed
• “O código que está em produção está funcionando, se
você editar o código em produção aumenta a cha...
Princípio Open/Closed
• “Quando falamos de OCP falamos que o
comportamento deve ser extensível e uma forma de
escalar um o...
Princípio Open/Closed
• “Escalar verticalmente é fazer uma classe filho ser do
tipo da classe pai.
Escalar horizontalmente...
Princípio Open/Closed
• “Herança é ‘reaproveitar’ criando um sub tipo,
exemplo: a classe A é um tipo, e a classe B é do ti...
Exemplos
ENVIADOS ANONIMAMENTE PELO PÚBLICO
User
User Viola o OCP porquê deixando a configuração
de servidor aqui o código terá que ser alterado
a cada mudança o servidor
User
Você está assumindo que sempre irá usar
PDO, se um dia a fonte de dados mudar
essa classe precisará mudar.
User
O método CREATE viola OCP por culpa do
construtor.
User Se no construtor você passasse uma
interface e não direto a PDO, o método
CREATE não saberia da implementação
direta ...
User Inclusive há uma violação de SRP: conexão
de base de dados não precisa ser de
responsabilidade dessa classe.
User
Solução: passar
por parâmetro
os dados de
configuração
(porém ainda
viola o SRP)
Login
Login
Ele quebra OCP pois
em uma futura
evolução a classe será
mudada para
adicionar condições
no switch.
Login
Se a lógica de um dos
cases mudar a classe
será mudada.
Login
Além do que mudar a
lógica de uma dessas
lógicas pode quebrar
o resto do código.
Login
Solução: usar
interfaces
(dica: padrão
estrategy).
Pôs pauta!
DISCUSSÃO ALÉM DA PAUTA E RESOLUÇÃO DE DÚVIDAS DO PÚBLICO
Próximos SlideShares
Carregando em…5
×

OOD - Princípio Open/Closed

755 visualizações

Publicada em

Slides do Hangout sobre design orientada a objetos, dessa vez sobre o princípio Open/Closed, o OCP

Publicada em: Tecnologia
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
755
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

OOD - Princípio Open/Closed

  1. 1. Hangout OOD - Princípio Open/Closed 11/06/2014
  2. 2. Participantes: • João Batista Neto – Hoster • Daniel Ribeiro - Moderador • Priscila Mayumi Sato – Slides • Ivo nascimento – Controlador do chat • Luís Otavio
  3. 3. Pauta • Repassar o que foi discutido no hangout passado e apontar o link para a gravação. • Abordar, com profundidade e exemplos, o princípio de design O.C.P. • Aberto mas fechado, como algo pode ser aberto mas fechado? • Como saber se meu código não está fechado? • Ilustrar casos do mundo real, através de exemplos em frameworks ou bibliotecas conhecidas, o uso de O.C.P. e as consequências que esse uso trouxe para o FW ou biblioteca.
  4. 4. Princípio de design S.R.P. BREVE REVISÃO DO ÚLTIMO HANGOUT HTTPS://WWW.YOUTUBE.COM/WATCH?V=NY3W2QT0LU0&LIST=PLRX4OTWY_G7 M4YG9LN-0ZWKYHZ1BNVYXF
  5. 5. Princípio Open/Closed
  6. 6. Princípio Open/Closed • “Nem sempre a coisa pressuposta é eternamente aquilo planejada, e como a classe não foi feita para poder editar você não consegue. Por isso o principio se trata sobre isso” João • “A ideia geral dos princípios SOLID é evitar a mudança ao máximo, e o principio Open/Closed evita ao máximo a mudança daquele participante, ao invés de alterar ele estende” Luiz Otávio • “Assim nós temos o recurso da herança e do polimorfismo para lidar com esse principio” Daniel
  7. 7. Princípio Open/Closed • “OCP e SRP não são dependentes um do outro, um código pode ter 3 responsabilidades e mesmo assim não violar OCP” João • “A ordem das letras do SOLID possuem uma certa lógica, uma razão” Daniel • “Quanto maior o número de responsabilidades maior a possibilidade de violar o OCP. Der repente você toma todo o cuidado com o SRP e cria uma pré suposição que não deveria.” João
  8. 8. Princípio Open/Closed • “Quando você vê os dois princípios (SRP e OCP) aumenta a qualidade do código, seguir SRP diminui a possibilidade de cometer erros com o OCP” Ivo • “O OCP está relacionado não só a classe, mas módulos, funções e pacotes. Estender não só objetos como também outros itens” Daniel • “Quando falamos de pacotes não são os mesmos nomes do SOLID mas o conteúdo é a mesma coisa: ao entregue uma coisa não editar mais a coisa, estender e não editar” João
  9. 9. Princípio Open/Closed • “O código que está em produção está funcionando, se você editar o código em produção aumenta a chance de adicionar um bug. Então escreva um código que é estendível e não editável, tornando ela escalável sem edição.” João • “Herança e polimorfismo são duas coisas ligadas da qual juntas ajudam a lidar com o OCP” Daniel
  10. 10. Princípio Open/Closed • “Quando falamos de OCP falamos que o comportamento deve ser extensível e uma forma de escalar um objeto é falar de herança vertical, que é algo muito delicado (tema do próximo hangout). Quando falamos de polimorfismo falamos de várias formas de algumas coisa se comportar.” João
  11. 11. Princípio Open/Closed • “Escalar verticalmente é fazer uma classe filho ser do tipo da classe pai. Escalar horizontalmente é injetar a dependência.” João • “A forma mais simples é passar um participante como parâmetro (não vamos entrar nos assuntos futuros).” João • “Ou seja, estamos passando responsabilidade, delegando, e isso tem forte relação com o SRP” Daniel
  12. 12. Princípio Open/Closed • “Herança é ‘reaproveitar’ criando um sub tipo, exemplo: a classe A é um tipo, e a classe B é do tipo da A também. Na questão do Polimorfismo é algo que tem várias formas, você tem uma assinatura para aquele lugar, não interessa como vão fazer.” Luíz
  13. 13. Exemplos ENVIADOS ANONIMAMENTE PELO PÚBLICO
  14. 14. User
  15. 15. User Viola o OCP porquê deixando a configuração de servidor aqui o código terá que ser alterado a cada mudança o servidor
  16. 16. User Você está assumindo que sempre irá usar PDO, se um dia a fonte de dados mudar essa classe precisará mudar.
  17. 17. User O método CREATE viola OCP por culpa do construtor.
  18. 18. User Se no construtor você passasse uma interface e não direto a PDO, o método CREATE não saberia da implementação direta da PDO.
  19. 19. User Inclusive há uma violação de SRP: conexão de base de dados não precisa ser de responsabilidade dessa classe.
  20. 20. User Solução: passar por parâmetro os dados de configuração (porém ainda viola o SRP)
  21. 21. Login
  22. 22. Login Ele quebra OCP pois em uma futura evolução a classe será mudada para adicionar condições no switch.
  23. 23. Login Se a lógica de um dos cases mudar a classe será mudada.
  24. 24. Login Além do que mudar a lógica de uma dessas lógicas pode quebrar o resto do código.
  25. 25. Login Solução: usar interfaces (dica: padrão estrategy).
  26. 26. Pôs pauta! DISCUSSÃO ALÉM DA PAUTA E RESOLUÇÃO DE DÚVIDAS DO PÚBLICO

×