clean code

16
Clean Code Clean Code Fernando Gama Fernando Gama Acadêmico de Sistemas de Informação Acadêmico de Sistemas de Informação Bolsista AIT/CADIS/PROEG Bolsista AIT/CADIS/PROEG

Upload: fernando-gama-da-mata

Post on 03-Nov-2014

287 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Clean Code

Clean CodeClean Code Fernando GamaFernando GamaAcadêmico de Sistemas de InformaçãoAcadêmico de Sistemas de Informação

Bolsista AIT/CADIS/PROEGBolsista AIT/CADIS/PROEG

Page 2: Clean Code

Clean Code – O que é isso?Clean Code – O que é isso?

• EleganteElegante• EficienteEficiente• LegívelLegível• SimplesSimples• DiretoDireto• ÚnicoÚnico• Bem escritoBem escrito• Possui UMA responsabilidadePossui UMA responsabilidade

Page 3: Clean Code

Clean Code Clean Code

• Qual sua reação ao ver um código ruim?Qual sua reação ao ver um código ruim?

Page 4: Clean Code

Clean Code Clean Code

• O que todo bom código deve ter?O que todo bom código deve ter?•

1. Organização;1. Organização;

2. Arrumação;2. Arrumação;

3. Limpeza;3. Limpeza;

4. Padronização;4. Padronização;

5. Autodisciplina;5. Autodisciplina;

Page 5: Clean Code

Clean Code Clean Code

• E se...E se...o código for confuso?o código for confuso?

• Lentidão;Lentidão;• Uma alteração, várias falhas;Uma alteração, várias falhas;• Remendos;Remendos;• Queda de produtividade;Queda de produtividade;• Alocação de mais recursosAlocação de mais recursos

Page 6: Clean Code

Clean Code Clean Code

1. Nomes significativos1. Nomes significativos• Nome deve revelar o seu propósito.Nome deve revelar o seu propósito.

• O que fazem? Como são usados? Porque existem?O que fazem? Como são usados? Porque existem?

• Não economize nos caracteres.Não economize nos caracteres.

• Seja claro.Seja claro.

Exemplo a não ser seguido: (int d;) //tempo em dias;Exemplo a não ser seguido: (int d;) //tempo em dias;

Page 7: Clean Code

Clean Code Clean Code

public List<int[]> getThem(){ public List<int[]> getThem(){

List<int[]> list1 = new ArrayList<int[]>();List<int[]> list1 = new ArrayList<int[]>();

for(int[] x : theList)for(int[] x : theList)

if(x[0] == 4) list1.add(x); if(x[0] == 4) list1.add(x);

return list1;return list1;

public List<int[]> getFlaggedCells(){ public List<int[]> getFlaggedCells(){

List<int[]> flaggedCells = new ArrayList<int[]>(); List<int[]> flaggedCells = new ArrayList<int[]>();

for(int[] cell:gameBoard) for(int[] cell:gameBoard)

if(cell[STATUS_VALUE] == FLAGGED) if(cell[STATUS_VALUE] == FLAGGED)

flaggedCells.add(cell); flaggedCells.add(cell);

return flaggedCells;}return flaggedCells;}

Page 8: Clean Code

Clean Code Clean Code

1. Métodos e funções1. Métodos e funções

O que os tornam métodos e funções fáceis de se ler e O que os tornam métodos e funções fáceis de se ler e entender? A primeira regra dos métodos é que eles devem entender? A primeira regra dos métodos é que eles devem ser pequenos, a segunda é que eles devem ser menores ser pequenos, a segunda é que eles devem ser menores ainda. ainda.

• Recomenda-se 20 linhas.Recomenda-se 20 linhas.

• Deve fazer apenas uma coisa.Deve fazer apenas uma coisa.

• Evite passar muitos parâmetros.Evite passar muitos parâmetros.

Page 9: Clean Code

Clean Code Clean Code

public boolean checkPassword(String username, String password) public boolean checkPassword(String username, String password)

{{

String passwordStatus = String passwordStatus = cryptographer.decrypt(password);cryptographer.decrypt(password);

if(passwordStatus.equals(“OK”)) {if(passwordStatus.equals(“OK”)) {

Session.initialize();Session.initialize();

return true;return true;

}}

return false;return false;

}}

Page 10: Clean Code

Clean Code Clean Code

3. Comentários3. Comentários

• O melhor comentário é aquele que não precisa ser escrito.O melhor comentário é aquele que não precisa ser escrito.

• Pode causar confusões.Pode causar confusões.

• Se você pensar em adicionar um comentário é melhor Se você pensar em adicionar um comentário é melhor refatorar.refatorar.

• Pode ser utilizado para informar ao leitor sobre alguma Pode ser utilizado para informar ao leitor sobre alguma consequênciaconsequência

• Não é apropriado inserir no código créditos e autoria, Não é apropriado inserir no código créditos e autoria, redundância,informações excessivas, comentários que redundância,informações excessivas, comentários que devem ser explicados,etc. devem ser explicados,etc.

Page 11: Clean Code

Clean Code Clean Code

4. Formatação4. Formatação

• Importante pois facilita o entendimento.Importante pois facilita o entendimento.

• Classes de no máximo 500 linhas é uma boa prática.Classes de no máximo 500 linhas é uma boa prática.

• Espaços entre operadores, parâmetros e vírgulas.Espaços entre operadores, parâmetros e vírgulas.

• Conceitos relacionados próximos um do outro.Conceitos relacionados próximos um do outro.

• Identação para visualização do escopo. Identação para visualização do escopo.

Page 12: Clean Code

Clean Code Clean Code

5. Tratamento de exceção5. Tratamento de exceção

• Evitar retornar um código de erro.Evitar retornar um código de erro.

• Lançamento de excessões.Lançamento de excessões.

• Não retornar NULL.Não retornar NULL.

• NULL não pode ser passado como parâmetro.NULL não pode ser passado como parâmetro.

• As mensagens devem ser informativas.As mensagens devem ser informativas.

• Regras de negócio são tratadas em um lugar diferente das Regras de negócio são tratadas em um lugar diferente das regras de erros. regras de erros.

Page 13: Clean Code

Clean Code Clean Code

6. Testes6. Testes

• Garantir que cada pedaço do código esta funcionando.Garantir que cada pedaço do código esta funcionando.

• Regras do TDD: Regras do TDD:

• Você não pode escrever o código até que você tenha criado Você não pode escrever o código até que você tenha criado um teste que falhe.um teste que falhe.

• Você não pode escrever mais testes do que seja suficiente Você não pode escrever mais testes do que seja suficiente para falhar.para falhar.

• Você não pode escrever mais código do que o suficiente Você não pode escrever mais código do que o suficiente para passar o teste que está falhando.para passar o teste que está falhando.

Page 14: Clean Code

Clean Code Clean Code

7. Diminuir o número de classes e 7. Diminuir o número de classes e métodos métodos

• Objetivo é manter o sistema pequenoObjetivo é manter o sistema pequeno

Page 15: Clean Code

Clean Code Clean Code

• E muito +:E muito +:

http://blog.bluesoft.com.br/bluesoft-labs-http://blog.bluesoft.com.br/bluesoft-labs-clean-code-por-bruno-lui/clean-code-por-bruno-lui/

http://www.slideshare.net/WillCaputo/cleahttp://www.slideshare.net/WillCaputo/clean-code-13391715n-code-13391715

Page 16: Clean Code

Clean Code Clean Code

OBRIGADO!OBRIGADO!