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: 10
Refatore 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: 10
A 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.