47
Mauricio Aniche [email protected] .br @mauricioaniche http://www.aniche.com.br

O que é código bonito?

Embed Size (px)

DESCRIPTION

Minha palestra sobre Clean Code no Tech Day da Ticket.

Citation preview

Page 1: O que é código bonito?

O que é Código Bonito?

Mauricio [email protected]

@mauricioanichehttp://www.aniche.com.br

Page 2: O que é código bonito?
Page 3: O que é código bonito?

O que é “bonito”?

Page 4: O que é código bonito?

Qual é o mais bonito?

 

Page 5: O que é código bonito?

Qual é o mais bonito?

 

Page 6: O que é código bonito?

Qual é o mais bonito?

 

Page 7: O que é código bonito?

simples??flexív

el?fácil de ler?

sem duplicaçõ

es?curto?

enxuto?

O que é código bonito?

Page 8: O que é código bonito?

Qual é o menos feio?

 

Page 9: O que é código bonito?

É mais fácil identificaro feio! :)

E isso pode ser útil!

Page 10: O que é código bonito?

métodos

longos sem padrã

o

classes

gigantes código

repetidomuitos

parâmetros

muitos if’s

Page 11: O que é código bonito?

“As feias que me

perdoem, mas beleza

é fundamenta

l!”

Page 12: O que é código bonito?

Agora vai ficar técnico!

Page 13: O que é código bonito?

Pensar nos nomes é importante!

Deve dizer o que ele faz, e como deve ser usado!

Tira a necessidade de lera implementação do método.

Deve ser fácil de ser entendidopor todos da equipe.

Page 14: O que é código bonito?

int kkk; // dias da semanaWTF?

Use nomes que

façam sentido!

Page 15: O que é código bonito?

public List<int[]> getThem() { List<int[]> list1 = new ArrayList<int[]>(); for (int[] x : theList) if(x[0] == 4) list1.add(x); return list1;}

public List<int[]> getFlaggedCells() { List<int[]> flaggedCells = new ArrayList<int[]>(); for (int[] cell : gameBoard) if(cell.isFlagged()) flaggedCells.add(cell); return flaggedCells;}

Page 16: O que é código bonito?

for(int i = 0; ...) { int a1 = i * 8; int a2 = a1 / 2; int a3 = (a1 + a2) * 3;}

Não crie variáveis com nomes similares!

Page 17: O que é código bonito?

List<Conta> contasAbertas;

@Testpublic void deve_testar_x(){}

Tenha um padrão!

Page 18: O que é código bonito?

List<Conta> scherobles;

Pense na língua que vai escrever.

Use nomes pronunciáveis!

Page 19: O que é código bonito?

E em relação aosmétodos?!

Deve ser enxuto.

Deve ter apenas umaresponsabilidade.

Deve deixar claro sua intenção.

Page 20: O que é código bonito?

Quantas linhas? 20? 100?

Uma página de impressora?Uma tela?

Tamanho dosmétodos

Page 21: O que é código bonito?

Qual o tamanho máximo?4? 8? 20?2 ifs? 3 ifs?

ComplexidadeCiclomática

Page 22: O que é código bonito?

Ou o método faz alguma coisa,ou ele devolve alguma coisa.

Nunca os dois.

Command QuerySeparation

Page 23: O que é código bonito?

O menor possível.

Mais que 3? Pense pra fazer isso.

Quantidade de parâmetros?

Page 24: O que é código bonito?

Evite passar “boolean” pros seus métodos.

Método faz coisa demais?

Usar flags?

Page 25: O que é código bonito?

Evite retornar null.

A ideia do bom vizinho.

Não retorne null!

Page 26: O que é código bonito?

Evite repetir código. - Extraia o que há de comum para outros métodos.

Código repetido?

Page 27: O que é código bonito?

Comentário de código

Somente quando necessário.

O comentário não é “código”!

Raramente são atualizados.

Page 28: O que é código bonito?

Comentário não é “maquiagem” de código.- Código está feio, refatora.

Código feio precisa de

comentário?

Page 29: O que é código bonito?

if(aluno.getQtdCursos()>10 && aluno.getMeses() > 24) { // ...}

E aquela condição

complicada?

if(aluno.isImportante()) { // ...}

Page 30: O que é código bonito?

O melhor é não ter.- Explicar algoritmo matemático?-Explicar alguma decisão de negócio?

Quando um comentário é

bom?

Page 31: O que é código bonito?

E minhas classes?

Devem ter uma única responsabilidade.

Quanto mais enxuta,mais fácil de manter e

reutilizar.

Não deve dependerde muitas outras classes.

Page 32: O que é código bonito?

Objetos devem ter atributos e métodos que manipulam esses atributos.

Isso é diferente de uma simples estrutura de dados.

OO from the Trenches

Page 33: O que é código bonito?

Pense em abstrações.

Abstrações possibilitam a evolução mais natural do código.

Estude padrões de projeto.

Abstrações são do bem

Page 34: O que é código bonito?

A classe deve esconder COMO ela faz sua tarefa.

Intimidade inapropriada.

Encapsule direito!

Page 35: O que é código bonito?

Quando bem utilizados, ajudam a flexibilizar o sistema.

“Todo mundo” conhece a solução.

Estude padrões de projeto

Page 36: O que é código bonito?

Tratamento de erros

Deve ser feito de maneira elegante.

Use exceções para casos excepcionais.

Page 37: O que é código bonito?

Não use o retorno do método para indicar se houve uma exceção.

Não use o retorno do método!

Page 38: O que é código bonito?

Dê contexto para sua exceção.

Se você está encapsulando a exceção, passe-a como a “causa” da sua exceção.

Exceptions caprichadas

Page 39: O que é código bonito?

Arquitetura?

Arquitetura vira código...

Page 40: O que é código bonito?

Não saia criando EJBs pra lá e pra cá...

Não tenha 200 camadas, só porque fica bonito no diagrama.

Evite arquiteturascomplicadas

demais

Page 41: O que é código bonito?

Não me diga que o Spring MVC / VRaptor não serve pra você...

Esqueça o seu framework

corporativo caseiro!

Page 42: O que é código bonito?

Não escreva regras de negócio no controller.

MVC é legal!

Controllers na Web

Page 43: O que é código bonito?

O que os “pops” de lá dizem?

Clean code is simple and direct. Clean code reads like wellwritten prose. (Grady Booch)

Clean code always looks it was written by someone who cares. There is nothing

obvious that you can do to make it better. (Michael Feathers)

Clean code can be read, and enhanced by a developer other than its original author.

(Dave Thomas)

Page 44: O que é código bonito?

O que os “pops” daqui dizem?

Código bom é o código que com o mínimo de esforço um desenvolvedor mediano do

projeto entende mesmo após o criador sair do projeto. (Guilherme Silveira)

Código bonito é código fácil e bom de ler. (Paulo Silveira)

Código que você consegue ler imediatamente, sem precisar se

esforçar. (Lucas Cavalcanti)

Page 45: O que é código bonito?

O que os “pops” daqui dizem?

Código feito pra pessoas lerem: tão simples quanto possível, bem separado, com nomes

decentes, etc. (Cecília Fernandes)

Código bonito é código cujos passos estão todos em um mesmo nível de abstração de forma que eu entenda claramente o melhor

ponto para alterá-lo sem ter que me preocupar se minha mudança gera impactos

inesperados. (Hugo Corbucci)

Page 46: O que é código bonito?

Referências

•Code Beauty. Fabio Kon. 2010.

•Clean Code. Robert Martin.

Page 47: O que é código bonito?

OBRIGADO!

Mauricio [email protected]

@mauricioanichehttp://www.aniche.com.br

http://www.tddnomundoreal.com.br