Boas práticas de programação orientada a objetos Alunos:    Higor Ramos    Renan Cabral
Objetivo <ul><ul><li>Produtividade </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Legibilidade </li></ul></ul><ul><li>  </...
 
O que você já fazia sem OO <ul><ul><li>Pequenas funções </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Boa nomenclatura de...
             Técnicas básicas <ul><ul><li>Dar nomes explicativos à variáveis, classes, métodos, etc, deixando claro a suas...
S.O.L.I.D. <ul><ul><li>Responsabilidade única </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Aberto-fechado </li></ul></ul...
 
Filosofias <ul><ul><li>You are not going to need it(YAGNI)‏ </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Don't repeat yo...
Anti-Padrões <ul><ul><li>Big Ball of mud </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Anemic Model </li></ul></ul><ul><l...
Dicas <ul><ul><li>Foque no retorno de investimento(ROI)‏ </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Princípios também ...
Sobre os passos dos gigantes <ul><ul><li>Ron Jeffries </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Robert C. Martin - &q...
Hands-on <ul><ul><li>Tav de padrões de projeto </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Criação de um grupo de estud...
            Bibliografia     <ul><li>Refatoração : Aperfeiçoando o Projeto de Código Existente - Martin Fowler (2004)‏ </l...
Upcoming SlideShare
Loading in …5
×

Boas praticas de_programacao_oo

1,796 views

Published on

Published in: Technology, Lifestyle
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,796
On SlideShare
0
From Embeds
0
Number of Embeds
322
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Legibilidade: Fazer com que o código seja simples, rápido de entender e que o nome de classes, métodos, etc comuniquem sua intenção. Código legível para seres humanos Manutenabilidade: Manutenção no código com mais controle sobre seu escopo, facilita e muito  adicionar mais funcionalidades e até para encontrar possíveis problemas Extensibilidade Crescimento do software de maneira organizada e bem projetada; sofware adequado às muitas mudanças de negócios Produtividade:  Código mais fácil de entender + manutenção melhorada + facilidade de entender e extender = produtividade = cliente satisfeito  
  • Não existe formula mágica, boas práticas envolve design, codificação, processo e metodologia
  • Responsabilidade única  Uma classe ou um método só deve ter apenas um motivo para mudar; caso contrário, eles tem responsabilidades ou dependências demais Aberto-fechado  Faça seu código depender de abstrações e não de tipos concretos; Assim você consegue adicionar mais funcionalidade no sistema sem precisar modificar algo que já funciona mas apenas extender &amp;quot;plugando&amp;quot; mais código Substituição de liskov Classes devem apenas ter dependencias tipos próximos ,  ou seja, garantindo interoperabilidade semântica entre tipos em uma hierarquia de objetos Segregação em interfaces Hierarquia com herança pode ocasinar alocação de comportamentos desnecessários a alguns objetos . Utilize interfaces e fazendo com que tipos concretos definam seus comportamentos de acordo com suas necessidades  
  • Falar um pouco da nossa experiencia. Eu(Higor) quando aprendi padrões ficava olhando o código de hello world procurando uma chance de aplicar padrões ROI Sem Roi a empresa não será capaz de pagar o seu salario   -Faça funcionar então refatore Use um chapeu de cada vez -Febre de boas práticas Pegar um código alheio e alterar o mesmo sem retorno de investimento
  • Boas praticas de_programacao_oo

    1. 1. Boas práticas de programação orientada a objetos Alunos:    Higor Ramos    Renan Cabral
    2. 2. Objetivo <ul><ul><li>Produtividade </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Legibilidade </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Extensibilidade </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Manutenabilidade   </li></ul></ul><ul><li>  </li></ul>
    3. 4. O que você já fazia sem OO <ul><ul><li>Pequenas funções </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Boa nomenclatura de variáveis </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Código auto-comentado </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Divisão em módulos lógicos </li></ul></ul>
    4. 5.             Técnicas básicas <ul><ul><li>Dar nomes explicativos à variáveis, classes, métodos, etc, deixando claro a suas responsabilidades </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Dividir grande bloco de código em vários métodos explicativos  </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Desembaraçar expressões condicionais encadeadas em demasia </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Remoção de código duplicado </li></ul></ul>
    5. 6. S.O.L.I.D. <ul><ul><li>Responsabilidade única </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Aberto-fechado </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Substituição de Liskov </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Segregação em interfaces  </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Inversão de dependência </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Injeção de dependência </li></ul></ul>
    6. 8. Filosofias <ul><ul><li>You are not going to need it(YAGNI)‏ </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Don't repeat yourself(DRY)‏ </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Keep it simple stupid(KISS) </li></ul></ul>
    7. 9. Anti-Padrões <ul><ul><li>Big Ball of mud </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Anemic Model </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Poltergeists  </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Base bean  </li></ul></ul><ul><li>  </li></ul><ul><ul><li>  Accidental Complexity </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Refatorar antes ou em desenvolvimento  </li></ul></ul><ul><li>  </li></ul>
    8. 10. Dicas <ul><ul><li>Foque no retorno de investimento(ROI)‏ </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Princípios também se contradizem </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Cuidado com a febre de boas práticas </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Faça funcionar então refatore </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Use do bom senso </li></ul></ul>
    9. 11. Sobre os passos dos gigantes <ul><ul><li>Ron Jeffries </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Robert C. Martin - &quot;Uncle Bob&quot; </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Alistar Cockburn </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Ward Cunnighan </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Martin Fowler </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Kent Beck </li></ul></ul>
    10. 12. Hands-on <ul><ul><li>Tav de padrões de projeto </li></ul></ul><ul><li>  </li></ul><ul><ul><li>Criação de um grupo de estudo sobre boas práticas de programação OO e padrões de projetos </li></ul></ul>
    11. 13.            Bibliografia    <ul><li>Refatoração : Aperfeiçoando o Projeto de Código Existente - Martin Fowler (2004)‏ </li></ul><ul><li>Refatoração para Padrões - Joshua Kerievsky (1994)‏ </li></ul><ul><li>  </li></ul><ul><li>The Pragmatic Programmer - Andrew Hunt and David Thomas (1999)‏ </li></ul><ul><li>  </li></ul><ul><li>Code Complete: A Practical Handbook of Software Construction - Steve McConnell (2004)‏ </li></ul><ul><li>  </li></ul><ul><li>Design Patterns: Elements of Reusable Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Johnson e John M. Vlissides (1994) </li></ul>

    ×