anos. Trabalho na área faz 6 anos. Estou focada em JavaScript e Front-end. Estou I .T. Architect II na F1rst (Grupo Santander) Estou Tech Lead na ONG Lacrei Saúde Estou Instrutora de Javascript na Linux Tips REFATORAÇÃO EM JAVASCRIPT @jessilyneh
reestruturar um trecho de código ou programa existente, alterando sua estrutura interna sem alterar seu comportamento externo.* *https://refactoring.com/ @jessilyneh
Quando refatorar? Sinta o "cheiro" do código Listas longas de parâmentros Variáveis globais (Var) Dados mutáveis consumidos por varias partes Modulos frequentemente alterados por motivos diferentes Uma alteração que custa várias alterações Função separada dos dados que precisa *Refactoring - 2' edition, M. Fowler
varios lugares Quando refatorar? Sinta o "cheiro" do código Excesso de tipos primitivos, falta de tipos significativos Switches repetidos Laços desnecessários Generalidade especulativa (funções usadas só pelos casos de testes) Estruturas denecessárias Campos definidos apenas em algumas situações *Refactoring - 2' edition, M. Fowler
e objeto) Quando refatorar? Sinta o "cheiro" do código Encapsulamento com excesso de delegação Necessidade de acoplamento Classes fazendo coisa demais Heranças que são passadas sem serem usadas Classes de dados Classes alternativas com interfaces diferentes Usar comentários para não refatorar *Refactoring - 2' edition, M. Fowler
funcionalidades Refatore para deixar o código mais fácil de entender Refatore se algo está sendo feito de forma ruim 1 2 3 4 Refatore gradualmente as grandes mudanças 5 Refatore durante um code review https://refactoring.guru/refactoring/when
da refatoração em si é entender o que precisa ser feito, porque precisa ser feito, as alternativas disponíveis e se vai ter algum impacto real ANTES de começar a mexer no código.
pontos que separam diferentes partes do comportamento geral Elabore suas conclusões sobre o funcionamento do código e comece a decompor as partes Escreva testes que realmente testam 1 2 3 *Refactoring - 2' edition, M. Fowler 4 Faça o suficiente para que os testes passem e para deixar o código melhor do que quando você o encontrou
Javascript Código Complexo: Código excessivamente complexo e difícil de entender, como por exemplo a complexidade ciclomática, que são os níveis de ramificações que o código pode entrar (if, loops) e que pode ser extremamente difícil de prever apenas lendo o código. Número Mágico: Uso de números codificados diretamente no código em vez de usar constantes ou variáveis nomeadas, tornando o código menos legível e manutenível Método Longo: Funções ou métodos excessivamente longos que realizam muitas tarefas, tornando-os mais difíceis de entender e testar
Javascript Callback Aninhado: Aninhamento excessivo de funções de retorno de chamada, levando a um código difícil de ler e manter Cirurgia com Espingarda: Fazer alterações em várias partes do código para uma única mudança de funcionalidade, indicando uma organização de código ruim Código Morto: Código que não é mais usado ou executado, poluindo o código e potencialmente causando confusão Duplicação de Código: Blocos de código repetidos que poderiam ser refatorados em funções ou módulos reutilizáveis
Javascript An Empirical Study of Code Smells in JavaScript Projects - https://swat.polymtl.ca/~foutsekh/docs/Saboury-SANER.pdf Javascript Code Smells: 7 to Watch out For: https://www.testim.io/blog/javascript-code- smells/ 4 Code Smells That Are Probably Already in Your Code: https://www.paulsblog.dev/4-code- smells-that-are-probably-already-in-your-code/ Look for Code Smells in JavaScript: https://betterprogramming.pub/looking-for-code-smells-in- javascript-677f1a312f29
para uma função, variável ou renomear algum componente/variavel? Algo precisa ser encapsulado? É necessário mover algum recurso? 1 2 3 4 Os dados estão bem organizados? 5 Precisa simplificar alguma lógica? 6 A herança (OO) está sendo usada adequadamente?
primeira vez, apenas faça. Na segunda vez que fizer algo repetido, torça o nariz diante da duplicação, mas faça. Quando estiver fazendo algo pela terceira vez, comece a refatorar. 1 2 3 * Don Roberts A regra de três da refatoração*
por alteração 1 2 3 refactor: extrai função de soma refactor: remove variável temporaria refactor: internaliza variável refactor: muda declaração de função refactor: divide o loop refactor: desloca instruções refactor: separa os calculos do componente de cobrança git rebase -i
Quem é a equipe dona do código? Refatorações que impactam partes externas a aplicação Projetos legados grandes, sem testes, podem ficar piores se refatorados 1 2 3 O ruim e o feio da refatoração
apenas as que constroem códigos consistentes de primeira mas também aquelas que pegam um código bruto e transformam numa obra de arte de legibilidade e performance
apenas as que constroem códigos consistentes de primeira mas também aquelas que pegam um código bruto e transformam numa obra de arte de legibilidade e performance