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

Preview:

Citation preview

Anna "Yui" Cruz

O que contribui para um código feio?

Eu quero é terminar rápido!!!

O que contribui para um código feio?

Eu quero é terminar rápido!!!

Todo mundo faz assim!!!

O que contribui para um código feio?

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?

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?

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?

Porque o código continua feio?

Porque o código continua feio?

●Desenvolvedores experientes saem do projeto

Porque o código continua feio?

●Desenvolvedores experientes saem do projeto

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

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

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

Comentários!

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

Use Test Driven Development

TDDPequenas porções de código

TDDDesenvolva apenas o necessário

TDDRefatoração sem medo

TDD

RED

GREEN

REFACTOR

SOLID

ingle Responsibilitypen-Closediskov Substitutionnterface Segregationependency Inversion

Single ResponsibilityUma classe/método, uma responsabilidade

Single ResponsibilityClasses e métodos pequenos e coesos

Single ResponsibilityMais fácil de manter

Open-closedClasses abertas para extender

Open-closedClasses fechadas para modificação

Open-closedDiminui o acoplamento entre as classes

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

Liskov substituitionUma classe pode ser substituida por uma subclasse

Liskov substituitionManutenção de contrato entre classes

Liskov substituitionDiminui o acoplamento, melhora o reaproveitamento

Interface segregationInterfaces especializadas

Interface segregationInterfaces sem conter métodos desnecessários

Interface segregationGerar interfaces pequenas e coesas

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

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

Dependency inversionUm problema, uma classe

Dependency inversionMais flexibilidade para "troca" de dependências

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

acruz@thoughtworks.comanna.cruz@gmail.com@yuizinhaannacruz.github.io

Recommended