Refatoração — extração de métodos e/ou funções
Conjunto de pequenos artigos para demostração de exemplos de refatoração passo a passo. No artigo de hoje será demonstrado a refatoração para extrair métodos/funções.
Problema
Você tem um código com funções e métodos muito longos, que fazem “muitas coisas”, difícil de compreender.
Solução
Extraia trechos de códigos dentro de um mesmo contexto para funções separadas, e chame-as.
Exemplo
Antes da refatoração
Depois da refatoração
Porque refatorar?
Quanto mais linhas forem encontradas em um método, mais difícil será descobrir o que o método faz. Esta é a principal razão para esta refatoração. O comentário acima # imprime os detalhes
nos indica que a função imprime_divida
faz mais do que uma tarefa só, por isso a refatoração é necessária.
Além de tornar seu código mais fácil de manter, extrair métodos também é um passo dado em muitas outras abordagens de refatoração.
Passo a passo para refatorar
- Crie um novo método/função e nomeie-o de forma clara. O nome do método ou função por si só deve dizer o que ele faz.
- Copie o trecho de código pertinente para o método/função criado. No local onde estava o código, chame o método.
Encontre todas as variáveis usadas nesse trecho de código. Se elas forem declaradas no trecho de código e não forem usadas em outras partes, deixe-as como estão, pois elas serão variáveis locais do método/função. - Caso alguma variável seja declarada antes do trecho de código que está sendo transformado em método/função, esta deverá ser passada como parâmetro para o método/função. As vezes é possível eliminar essa variável usando uma outra técnica de refatoração chamada substituir variável por função.
- Se você notar que alguma variável tenha seu valor alterado dentro do trecho de código extraído, significa que esse outro valor será necessário no código principal. Cheque! E se este for o caso, retorne esta variável para continuar sendo usada no código principal a fim de manter tudo funcionando como estava antes.
Respeitando o S do S.O.L.I.D.
Dentre os princípios de desenvolvimento de software, o famoso acrônimo S.O.L.I.D., ao realizar a refatoração em questão, estamos respeitando o princípio S: Single Responsibility Principle, que traduzindo para o português significa Princípio da Responsabilidade Unica.
De forma bem simplificada, quebrar uma função maior em outras menores garante que cada função tenha uma única responsabilidade, o famoso “dividir para conquistar”. Conseguimos, desta forma, uma manutenabilidade maior, melhor legibilidade e organização do nosso código.
Sugiro a leitura deste outro artigo referente aos princípios, da autora Daísa Fernandes: SOLID, Os 5 Princípios da POO
Conclusão
Esta é uma das refatorações mais simples e poderosas, sendo extremamente útil para quebrar métodos/funções longas, que tendem a ser complexos e difíceis de entender.
Além disso, esta técnica também um passo intermediária de outras refatorações.
Gostou? Me acompanhe para outras dicas simples de refatorações.