56
Hora da aventura! Vamos melhorar seu códig o?!? @yuizinha

TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Embed Size (px)

Citation preview

Page 2: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Anna "Yui" Cruz

Page 3: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 4: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 5: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 6: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

O que contribui para um código feio?

Page 7: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Eu quero é terminar rápido!!!

O que contribui para um código feio?

Page 8: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Eu quero é terminar rápido!!!

Todo mundo faz assim!!!

O que contribui para um código feio?

Page 9: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Eu quero é terminar rápido!!!

Tenho que começar a fazer agora!!! Depois refatoro!

Todo mundo faz assim!!!

O que contribui para um código feio?

Page 10: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Eu quero é terminar rápido!!!

Pra que fazer direito? Tô de saco cheio desse

projeto já!

Tenho que começar a fazer agora!!! Depois refatoro!

Todo mundo faz assim!!!

O que contribui para um código feio?

Page 11: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Eu quero é terminar rápido!!!

Pra que fazer direito? Tô de saco cheio desse

projeto já!

Tenho que começar a fazer agora!!! Depois refatoro!

Todo mundo faz assim!!!

Tá tudo pronto, só falta testar!

O que contribui para um código feio?

Page 12: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Porque o código continua feio?

Page 13: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Porque o código continua feio?

●Desenvolvedores experientes saem do projeto

Page 14: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Porque o código continua feio?

●Desenvolvedores experientes saem do projeto

●Novos desenvolvedores entram no projeto e tem medo de modificar algo

Page 15: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Porque o código continua feio?

●Desenvolvedores experientes saem do projeto

●Novos desenvolvedores entram no projeto e tem medo de modificar algo

●Mito de que demora muito mais tempo

Page 16: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Oh não!?!?! O que podemos fazer então?

Page 17: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 18: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Comentários!

Page 19: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 20: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 21: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Código auto-explicativoUse comentários com calma, pense se são realmente necessários

Page 22: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Use Test Driven Development

Page 23: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

TDDPequenas porções de código

Page 24: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

TDDDesenvolva apenas o necessário

Page 25: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

TDDRefatoração sem medo

Page 26: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

TDD

RED

GREEN

REFACTOR

Page 27: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

SOLID

ingle Responsibilitypen-Closediskov Substitutionnterface Segregationependency Inversion

Page 28: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 29: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 30: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 31: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 32: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Single ResponsibilityUma classe/método, uma responsabilidade

Page 33: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Single ResponsibilityClasses e métodos pequenos e coesos

Page 34: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Single ResponsibilityMais fácil de manter

Page 35: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 36: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Open-closedClasses abertas para extender

Page 37: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Open-closedClasses fechadas para modificação

Page 38: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Open-closedDiminui o acoplamento entre as classes

Page 39: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 40: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Barbara Liskov- Cientóloga da computação- Professora do MIT- Criadora da linguagem CLU- Vencedora do Prêmio Turing- Diversos artigos acadêmicos

Page 41: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Liskov substituitionUma classe pode ser substituida por uma subclasse

Page 42: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Liskov substituitionManutenção de contrato entre classes

Page 43: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Liskov substituitionDiminui o acoplamento, melhora o reaproveitamento

Page 44: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 45: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Interface segregationInterfaces especializadas

Page 46: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Interface segregationInterfaces sem conter métodos desnecessários

Page 47: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Interface segregationGerar interfaces pequenas e coesas

Page 48: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 49: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Dependency inversionAbstrações não devem depender de detalhes

Page 50: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Dependency inversionClasses de alto nível não devem depender de classes de baixo nível

Page 51: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Dependency inversionUm problema, uma classe

Page 52: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Dependency inversionMais flexibilidade para "troca" de dependências

Page 53: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 54: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
Page 55: TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?

Linkshttp://amzn.to/2dRdlafhttp://bit.ly/2dYKQb7http://amzn.to/2dTFthn