Clean code clickbus

32
What about Clean Code? Marcelo Santos - @marcelsud

description

 

Transcript of Clean code clickbus

Page 1: Clean code   clickbus

What about Clean Code?

Marcelo Santos - @marcelsud

Page 2: Clean code   clickbus

What about Clean Code?“It is not enough for code to work.”

Robert C. Martin (Uncle Bob)

Page 3: Clean code   clickbus

● Código duplicado● Classes longas (se houver)● Parâmetros demais● Falta de testes (ou nenhum)● Falta de Coding Standards● No design patterns at all● Código morto● Alta curva de aprendizado● Uma alteração, vários bugs● Alocação de mais recursos● Elevado custo em manutenção● Queda de produtividade● Perda de performance● Remendos / Gambiarras● ...

Consequências de código ruim

Page 4: Clean code   clickbus

A Regra do Escoteiro

“Deixe a área do acampamento mais limpa do que como você a encontrou”

Boy Scouts of America

Page 5: Clean code   clickbus
Page 6: Clean code   clickbus
Page 7: Clean code   clickbus
Page 8: Clean code   clickbus

Nomes significativos

Como?

● Pronunciáveis● Que revele seu propósito

Onde?

● Variáveis● Métodos

● Parâmetros● Classes

● Namespaces● etc

Page 9: Clean code   clickbus

Nomes ruins

Page 10: Clean code   clickbus

Nomes melhores

Page 11: Clean code   clickbus

Parâmetros demais

Os métodos devem ter um número pequeno de parâmetros. Nenhum é o ideal.

Acima de três é questionável.

Page 12: Clean code   clickbus

Parâmetros demais

Page 13: Clean code   clickbus

Poucos parâmetros

Page 14: Clean code   clickbus

Comentários

Page 15: Clean code   clickbus

Comentários

"Não insira comentários num código ruim, reescreva-o"Brian W. Kernighan e P. J. Plaugher

Page 16: Clean code   clickbus

Não faça isso…

Page 17: Clean code   clickbus

Lembre-se...

Se você precisa esclarecer seu código com um comentário, talvez seja um bom momento para

revê-lo.

Page 18: Clean code   clickbus

Duplicação

DRY: Don’t Repeat Yourself

Sempre que você vir duplicação em código, isso significa que você perdeu uma chance para abstração.

Encontre e elimine duplicações sempre que puder!

Page 19: Clean code   clickbus

Código morto

● Variáveis não utilizadas● Pedaços de código inúteis

● Comentários que não acrescentam informações

Faça a coisa certa: Dê a eles um funeral decente!

Page 20: Clean code   clickbus

Flag Arguments

“Argumentos Booleanos claramente declaram que o método possui mais que uma responsabilidade. Eles

são confusos e devem ser eliminados.”Uncle Bob

Page 21: Clean code   clickbus

Flag Arguments

Page 22: Clean code   clickbus

Flag Arguments

Page 23: Clean code   clickbus

Encapsular condicionais

melhor que...

Page 24: Clean code   clickbus

Substituir números mágicos por constantes

melhor que...

Page 25: Clean code   clickbus

Evitar condicionais negativas

melhor que...

Page 26: Clean code   clickbus

Coding Standards

“Softwares são feitos para ser lidos por humanos, e somenteincidentemente para ser executados por computadores”

H. Abelson and G. Sussman

Page 27: Clean code   clickbus

Tratamento de erros

● Evitar retornar um código de erro● Lançar excessões com contexto

● Não retornar NULL● Utilizar mensagens informativas

Page 28: Clean code   clickbus

Testes unitários

Fast: Devem ser rápidos.Independent: Sem depender uns dos outros e na hora que desejar.Repeatable: Devem passar tanto no servidor, quanto num notebook sem wi-fi.Self-validating: Devem garantir o resultado sem intervenção manual.Timely: Devem ser criados antes do código.

Page 29: Clean code   clickbus

LoD: Law of DemeterDesign by Contract

Design PatternsOrthogonality

CohesionSOLID

Classes

Page 30: Clean code   clickbus

SOLID

SRP: Single responsibility principlea class should have only a single responsibility.

OCP: Open/closed principle“software entities … should be open for extension, but closed for modification”.

LSP: Liskov substitution principle“objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”

ISP: Interface segregation principle“many client-specific interfaces are better than one general-purpose interface.”

DIP: Dependency inversion principleone should “Depend upon Abstractions. Do not depend upon concretions.”

Page 31: Clean code   clickbus

Classes

KISS: Keep it simple, stupid!

"A perfeição é alcançada não quando não há mais nada para adicionar,mas quando não há mais nada que se possa retirar"

Antoine de Saint-Exupéry, autor de "O Pequeno Príncipe"

Toda complexidade desnecessária deve ser descartada.

Page 32: Clean code   clickbus

What about Clean Code?

Marcelo Santos - @marcelsud