Qual a situação da base de código que você está trabalhando?
Eu diria que sempre existe aquele projeto...
Como eu cheguei ao Clean Code?
Adoção do Clean Code e patterns de arquitetura adequados
Boa parte do tempo passamos lendo código
Quem vai manter o código no futuro?
Devemos ter cautela.
Porque não o vemos em ação com tanta frequência?
Conjunto de conceitos simples
Que infelizmente muita gente não coloca em prática
Atribua nomes pronunciáveis em uma conversa
Imagine uma chamada...
Considere a seguinte variável: valorFP
Você consegue ser mais descritivo que 'valorFP'
O que você pode dizer sobre o seguinte membro de uma classe:
...
private Collection lista;
...
Talvez possamos melhorar...
...
private Collection listaProdutos;
...
...
private Collection catalogoProdutos;
...
Qual padrão de nome vamos utilizar?
...
private Collection catalogoProdutos;
private Collection CatalogoProdutos;
private Collection catalogo_produtos;
private Collection _catalogoProdutos;
...
Desde que toda a equipe utilize o padrão
Priorize o padrão da comunidade
E realmente é!
Mas muita gente não faz!
...
action1();
action2();
action3();
action4();
salvar1();
salvar2();
salvar3();
...
Devemos nos preocupar com o que os nossos métodos fazem e como fazem.
Em resumo, métodos pequenos acordo com o propósito da classe que os detém!
Com a diminuição de tamanho a possibilidade de reuso aumenta
Afinal, que outro cenário utilizaria aquele método que no mesmo bloco valida, salva, formata, conecta no banco e abre outra tela?
Quanto mais próximo do 'núcleo' maior a chance desse método alterar o estado do objeto
Código duplicado dificulta a manutenção
Uma boa pista são métodos que formatam e logo apresentam os dados
Na qual você chama o setText e o componente mostra uma dialog após definir o texto
Mostrar source AIS Android - ComerciaisController
//When I wrote this, only God and I understood what I was doing
//Now, God only knows
Eles podem mentir, pois não compilam nem são executados...
Eles não melhoram código ruim
Ao invés de sair comentando, pense se o código não precisa de uma refatoração
Remoção do Journaling
//private MenuProcess criarMenuCadastro() {
// MenuProcess menuCadastro = new MenuProcess();
// menuCadastro.setText(getString(R.string.atividade_menu_aceite));
// menuCadastro.setWidth(80);
// menuCadastro.setState(MenuProcess.StateMenu.PENDENTE);
// menuCadastro.setResImageIcon(R.drawable.ic_tab_aceite);
// menuCadastro.setResImageIconSelected(R.drawable.ic_tab_aceite_selected);
// menuCadastro.setSelected(true);
// return menuCadastro;
//}
Em dúvida sobre se deve ou não deixar código comentado? Método de de quase 200 linhas e boa parte dele são códigos comentados...
if(getTextView().getText().toString().equalsIgnoreCase(ordemServicoComercial.getNumOS()))
Não crie linhas intermináveis
Falando em formatação automática...
Membros da mesma equipe deveria utilizar o mesmo estilo de workspace
Com finalidade de facilitar o merge
Imagine um merge em linhas intermináveis
Como você trata os erros do seu software?
Em geral, só faça um catch quando for realizar alguma ação ou melhorar a mensagem.
Caso contrário passe para 'cima'
Sim, todos os catchs fazem a mesma coisa
Você já escreveu algum teste que possa ser repetido automaticamente?
Como seria testar um método gigante?
Todos os conceitos apresentados podem e devem ser aplicados aos testes
Exemplo de teste pequeno para um formatador de moeda
Caberia uma apresentação inteira sobre testes unitários e Test Driven Development(TDD)
Sem problemas, a idéia principal ter testes unitários que possam ser repetidos sempre. Caso contrário...
Muito mais que um checklist
Sempre deixe o código mais limpo do que você o encontrou.
Com cuidado obviamente!
Promover ambiente colaborativo!
Clean Code para manter as janelas intactas
Começamos onde estamos, com o que temos e fazendo o que podemos
JeremyBytes - Clean Code: Homicidal Maniacs Read Code, Too!
Espero ter contribuído!
Apresentação disponível em: