Lua:
Refatoração
Como fazer:
Vamos pegar uma função Lua simples e refatorá-la. Começamos com uma função que calcula a soma dos números em uma lista, mas é escrita sem muita preocupação com eficiência ou clareza:
function sumList(numbers)
local result = 0
for i=1, #numbers do
for j=1, #numbers do
if i == j then
result = result + numbers[i]
end
end
end
return result
end
print(sumList({1, 2, 3, 4})) -- Saída: 10Refatore para uma versão mais eficiente e legível:
function sumListRefactored(numbers)
local result = 0
for _, value in ipairs(numbers) do
result = result + value
end
return result
end
print(sumListRefactored({1, 2, 3, 4})) -- Ainda saída: 10A versão refatorada elimina o loop interno redundante, usando ipairs para iterar pela lista de forma limpa.
Aprofundamento
Historicamente, a refatoração vem da comunidade de programação Smalltalk no final dos anos 80 e foi popularizada pelo livro de Martin Fowler ‘Refactoring: Improving the Design of Existing Code’. Em Lua, a refatoração geralmente envolve simplificar condicionais complexas, quebrar funções grandes em menores e otimizar o uso de tabelas para melhorar o desempenho.
A refatoração em Lua tem suas ressalvas; a natureza dinâmica de Lua e a tipagem flexível podem tornar certas refatorações, como renomear variáveis ou mudar assinaturas de funções, mais arriscadas se não forem feitas com cautela. Ferramentas para análise de código estático (como luacheck) podem diminuir tais riscos. Alternativas incluem o desenvolvimento dirigido por testes (TDD), onde o código é continuamente refatorado como parte integrante do processo de desenvolvimento, em contraste com uma fase de refatoração separada.
Veja Também
- “Programming in Lua” por Roberto Ierusalimschy para melhores práticas e exemplos.
- “Refactoring: Improving the Design of Existing Code” por Martin Fowler para princípios aplicáveis em diversas linguagens.
- Diretório LuaRocks (https://luarocks.org/) para ferramentas e módulos voltados para a manutenção e refatoração de código Lua.