Top Banner
What about Clean Code? Marcelo Santos - @marcelsud http://marcelosantos.com
32
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Clean code

What about Clean Code?

Marcelo Santos - @marcelsudhttp://marcelosantos.com

Page 2: Clean code

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

Robert C. Martin (Uncle Bob)

Page 3: Clean code

● 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

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
Page 6: Clean code
Page 7: Clean code
Page 8: Clean code

Nomes significativos

Como?

● Pronunciáveis● Que revele seu propósito

Onde?

● Variáveis● Métodos

● Parâmetros● Classes

● Namespaces● etc

Page 9: Clean code

Nomes ruins

Page 10: Clean code

Nomes melhores

Page 11: Clean code

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

Parâmetros demais

Page 13: Clean code

Poucos parâmetros

Page 14: Clean code

Comentários

Page 15: Clean code

Comentários

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

Page 16: Clean code

Não faça isso…

Page 17: Clean code

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

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

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

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

Flag Arguments

Page 22: Clean code

Flag Arguments

Page 23: Clean code

Encapsular condicionais

melhor que...

Page 24: Clean code

Substituir números mágicos por constantes

melhor que...

Page 25: Clean code

Evitar condicionais negativas

melhor que...

Page 26: Clean code

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

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

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

LoD: Law of DemeterDesign by Contract

Design PatternsOrthogonality

CohesionSOLID

Classes

Page 30: Clean code

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

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

What about Clean Code?

Marcelo Santos - @marcelsudhttp://marcelosantos.com