Clean Code no Java
Para isso serão apresentadas as principais técnicas de refatoração, além de como e quando realizar esse processo. Um exemplo passo a passo demonstrará como identificar os odores de código e aplicar as técnicas necessárias para sua sanitização.
Autores: Adriano Aguiar de San Vicente e Jhonatan Rodrigues
A felicidade de seus clientes está diretamente relacionada a qualidade do software. Cada linha de código bem escrita nos ajuda a resolver problemas existentes e a realizar alterações de forma simples e rápida. Um código mal escrito pode desencadear uma série de bugs, mascarados por atrás da poluição da lógica mal escrita.
O código é a linguagem no qual expressamos os requisitos de um sistema. Pense em escrever um livro no qual as frases são desconexas, não há concordância e as palavras não fazem sentido. Temos o mesmo conceito relacionado ao software, quando suas classes e métodos não fazem o que se propõe a fazer ou realizam muitas funções ao mesmo tempo.
Escrever um código elegante pode ser comparado a escrever um livro, você os escreve para que seu leitor possa entender da forma mais clara possível a ideia que está sendo repassada. Tal qual um livro, um código limpo proporciona uma leitura natural a um programador, expondo as questões do problema a ser solucionado.
Podemos definir um código limpo como sendo um código que tem sua lógica clara e legível, que se propõe a realizar somente uma tarefa, delegando outras tarefas que não são de sua responsabilidade para outras classes e métodos, dificultando assim o encobrimento de problemas futuros e garantindo uma fácil manutenção.
Um código confuso pode nos fazer trabalhar mais lentamente, tentando entender o que está sendo executado para que assim possamos realizar uma modificação. Conforme a confusão vai aumentando, a produtividade da equipe acaba por cair. Uma equipe que no início de um projeto trabalha muito rápido tem seu rendimento comprometido no decorrer do projeto por conta da qualidade de seu código. Cada adição ou modificação no código causa problemas em outros pontos que teoricamente nem tinham ligação com a alteração.
Um código mal escrito incita outros programadores da equipe a também escreverem códigos ruins, já que não há preocupação com a qualidade. Uma pessoa que entra em um projeto no qual seu código está ruim, tende a seguir o caminho da equipe e começa a escrever seus códigos sem muita atenção, piorando ainda mais a qualidade do mesmo.
Nunca é tarde para se escrever ou melhorar um código existente. Através de pequenas melhorias durante o tempo percebemos que ó código se torna mais legível e de fácil manutenção. Dedicar um tempo para melhorar e limpar seu código não é somente uma questão de eficácia em termos de custo, mas sim uma ótima ponte para aperfeiçoamento e sobrevivência profissional.
Garantir um código limpo e de qualidade exige profissionais motivados e habilidosos. Tais habilidades são adquiridas através de estudo e devemos aplicar e aprimorar essas habilidades através do trabalho. Neste artigo serão apresentadas as principais técnicas de refatoração, focando nas mais seguras que podem ser realizadas através dos IDEs com o mínimo impacto e risco ao correto funcionamento da aplicação.
Escrever um código limpo exige o uso de uma vasta gama de técnicas aprendidas ao longo do tempo. O programador deve ter uma sensibilidade adquirida através do tempo e dos estudos para encontrar as sujeiras no código. Esta sensibilidade nos ajuda a encontrar a melhor alternativa para um problema existente e para uma série de comportamentos que ajudarão a tornar e manter o código limpo e legível. Neste artigo serão apresentados os principais odores para detecção dos pontos de melhoria no código.
Por fim, o artigo apresentará um exemplo completo passo a passo verificando os odores de um fragmento de aplicação e aplicando as técnicas adequadas para a refatoração e melhoria do código.
Refatoração
Refatoração é um processo que melhora o design e a estrutura interna de um código sem alterar seu comportamento externo. Visa tornar o código mais limpo, tornando-o mais fácil de entender, mais barato e rápido de manter, minimizando a chance de introdução de bugs.
Refatorar permite limpar o código com técnicas eficientes e bem controladas. Nesse processo, são realizados pequenos passos em sequência que podem ter um efeito cumulativo de melhorar o design do código de forma significativa. Com a refatoração é possível ir atingindo um design melhor de forma mais natural, enquanto o software é construído e evoluído.
Por que refatorar?
Conforme as pessoas alteram o código sem ter um entendimento mais profundo do design, a estrutura do código vai sendo quebrada. A cada nova manutenção o design vai se tornando mais pobre e a leitura do código vai ficando mais complexa. Refatorar melhora continuamente o design do software, não deixando ele se degradar ao longo de sua evolução.
Como a estrutura e legibilidade do código vão melhorando no processo de refatoração, vai sendo mais fácil encontrar os pontos de falha e bugs. Também fica mais simples de criar testes automatizados que possam validar seu correto funcionamento. Isso garante um processo de melhoria contínua da qualidade e estabilidade do software.
Um dos pontos mais relevantes é que refatorar ajuda a evoluir o código mais rapidamente. Um desenvolvedor consegue entender muito mais rápido onde alterar o software e, como muitos bugs são evitados, acaba perdendo muito menos tempo corrigindo bugs.
Quando a refatoração deve ser feita?
Quando for adicionar uma nova funcionalidade. No processo de entendimento do código para adição de funcionalidades, a refatoração auxilia agilizando o entendimento e evitando os impactos e efeitos colaterais no código.
Quando for corrigir um bug. Com o aumento do entendimento do comportamento do código e a correta organização, fica muito mais simples de encontrar bugs. O fato de ser encontrado um bug já demonstra que o código não possui a legibilidade necessária para que o bug fosse visto anteriormente.
Quando for revisar o código de outro desenvolvedor. A refatoração é uma das principais ferramentas para melhorar o entendimento do código. Dessa forma ele facilita bastante o processo de revisão, aumentando o entendimento e facilitando a busca por pontos de melhoria.
Testes Automatizados
Testes automatizados e refatoração são técnicas que funcionam muito bem juntas. Um grande exemplo é o Desenvolvimento Guiado por Testes (TDD), onde a cada ciclo, vamos automatizando testes e refatorando o código até chegar na solução final.
Uma aplicação que tenha alto nível de automatização de testes pode ser refatorada sem grandes riscos ao seu funcionamento. Se, após o processo, os testes continuarem rodando com sucesso, temos uma garantia maior de termos mantido o comportamento da aplicação.
Porém, a inexistência de testes não deve ser desculpa para deixar de praticar a refatoração. Basta escrever testes que cubram ...