clean code
DESCRIPTION
TRANSCRIPT
![Page 1: Clean Code](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042510/5456b878af79592b438b6d1d/html5/thumbnails/16.jpg)
Clean Code Clean Code
OBRIGADO!OBRIGADO!