Turma Online 28 - Imersão JavaScript | Semana 09 | 2023 | Professora: Luara Kerlen
Antes de começar, vamos organizar nosso setup.
- Fork esse repositório
- Clone o fork na sua máquina (Para isso basta abrir o seu terminal e digitar
git clone url-do-seu-repositorio-forkado
) - Entre na pasta do seu repositório (Para isso basta abrir o seu terminal e digitar
cd nome-do-seu-repositorio-forkado
) - [Add outras intrucoes caso necessario]
Refatorar o código do projeto em andamento.
O que veremos na aula de hoje?
Refatoração é o processo de alterar o código fonte de uma maneira que não altere seu comportamento externo e ainda melhore a sua estrutura interna. É uma técnica disciplinada de limpar e organizar o código, e por consequência minimizar a chance de introduzir novos bugs.
Ela é utilizada para manter um software bem projetado mesmo com o decorrer do tempo e as mudanças que ele virá a sofrer.
O código sofre grandes alterações ao longo do tempo, alterações capazes de mudar toda a sua estrutura inicial. Com várias equipes de desenvolvimento trabalhando, as vezes podem gerar certos code smells, pequenas bagunças que precisam ser ajustadas.
O processo de refatoração é uma otimização. Precisamos sempre pensar em código para melhorar a sua conformidade com padrões e a legibilidade.
OBS: A refatoração visa apenas à melhoria interna do código fonte.
Refatorar o software é uma técnica que pode, e deve, ser utilizada por diversas razões. Vejamos algumas delas:
Sem refatoração a estrutura interna de um software geralmente se degrada com as mudanças que ocorrem no decorrer do tempo. Programadores que nunca viram o código antes são encarregados de adicionar uma nova funcionalidade e provavelmente vão fugir um pouco do padrão que foi utilizado quando o software foi projetado. Aplicar refatoração após a adição dessa nova funcionalidade poderá deixá-la em conformidade com os padrões que foram utilizados nas outras funcionalidades que o software já possui;
Desenvolvedores geralmente estão sempre com pouco tempo para terminar suas tarefas e entregar a funcionalidade pronta. Para conseguir entregar dentro do prazo, alguns acabam se apressando na hora de codificar, o que pode prejudicar a legibilidade (clareza do código) e alguns bugs podem passar despercebidos.
Erros comuns são: não nomear as variáveis corretamente, duplicar código, colocar métodos em classes inadequadas, entre outros. Ao empregar a refatoração, muito provavelmente, tais "sujeiras" serão removidas do código, o que o tornará muito mais fácil de compreender e manter;
Quando um desenvolvedor vai refatorar certo código, ele deve entender exatamente o que aquele código está fazendo. Entendendo muito bem o seu funcionamento, os possíveis bugs existentes naquele código acabam se tornando evidentes. Como o desenvolvedor já está alterando o código, recomenda-se também eliminar o bug;
Com todas as vantagens citadas até agora, pode-se notar que quando a refatoração é aplicada por uma pessoa que tem domínio sobre a técnica, a qualidade do software aumenta e o código fica mais fácil de entender. Assim, quando um desenvolvedor pega o código para adicionar uma nova funcionalidade e consegue compreendê-lo mais rapidamente, o processo de desenvolvimento também ocorre de maneira mais rápida e tranquila.
Entender o código de outra pessoa não é uma tarefa trivial. Ainda mais quando é um software muito grande e complexo. Quando uma pessoa modifica um código que não é de sua autoria é possível que ela cometa alguns deslizes (métodos e variáveis mal nomeadas, duplicação de código, etc.) e com isso o código vai se tornando mais difícil de compreender.
Deste modo, após algum tempo, a inserção de novas funcionalidades se tornará uma tarefa mais complicada do que deveria, pois o desenvolvedor não conseguirá, ou terá muitas dificuldades em, entender exatamente o que código está fazendo.
Para evitar que o código fique complexo com o passar do tempo devido às atividades de manutenção e adição de novas funcionalidades, devemos refatorá-lo conforme as atualizações forem implementadas.
O Ideal é tentar sempre tornar o código menos complexo possível, e ajustar o entendimento dele com o ambiente externo.
Pense sempre na entrada, processamento e saída para que você possa montar uma estrutura funcional e conseguir fazer as devidas alterações.
Refatoração se implica em otimizar e melhorar um código fonte existente funcional, ou seja, um código que funcione corretamente.
Vamos auxiliar na refatoração dos nossos códigos! Seremos divididas em trios ou quartetos e cada uma fará a revisão para a refatoração de 2 projetos.
- Leia todo o código do projeto;
- Tente entender o que está acontecendo;
- Escreva o que está acontecendo no código da maneira mais detalhada possível, como se fosse uma documentação (faça isso em um documento no Google Docs);
- A medida que você lê e cria a sua documentação, escreva comentários para que o código do projeto seja refatorado, seguindo as regras de Código Limpo.
Tenha em mente: o código precisa ser limpo, simples e legível. Releia os conceitos de código limpo e aplique-as nos projetos.
No fim desse processo, compartilhe as documentações que criou dos dois projetos que você leu.
Exemplo de informações que precisam estar na documentação
O objetivo geral do projeto é tal...
O projeto possui as classes X, Y e Z.
- Classe X:
- É responsável por...
- Recebe os atributos...
- Possui os métodos A, B e C
- O método A é responsável por...
- O método A recebe os parâmetros ... e a saída é ...
- Como as classes se conversam entre si?
- Como o objetivo final do projeto é atingido?
- ...
Na medida que você tentar responder essas perguntas, você poderá ter dúvidas, e essas dúvidas provavelmente seriam respondidas por si só se o código tivesse escrito de uma maneira mais clara. A partir disso, faça suas sugestões de refatoração para que o código fique mais limpo, claro e legível.
Hora de refatorar o nosso código!
- Leia o seu próprio código e os comentários realizados pelas revisoras na parte 1;
- Veja o que faz sentido e refatore seguindo as dicas recebidas;
- Leia as documentações que foram escritas pelas revisoras e veja se elas conseguiram compreender plenamente o seu código;
- Por fim, reveja se seu código ainda pode ser refatorado em mais algum lugar.
Desenvolvido com 💜