Clean Code

Preview:

DESCRIPTION

 

Citation preview

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

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

Clean Code Clean Code

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

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;

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

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;

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;}

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.

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;

}}

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.

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.

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.

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.

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

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

Clean Code Clean Code

OBRIGADO!OBRIGADO!

Recommended