Lua:
Refaktorering
Hvordan:
La oss ta en enkel Lua-funksjon og refaktorisere den. Vi starter med en funksjon som beregner summen av tall i en liste, men som er skrevet uten mye tanke for effektivitet eller klarhet:
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})) -- Gir ut: 10
Refaktoriser til en mer effektiv og lesbar versjon:
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})) -- Gir fortsatt ut: 10
Den refaktoriserte versjonen blir kvitt den overflødige indre løkken, og bruker ipairs
for å iterere gjennom listen på en ryddig måte.
Dypdykk
Historisk kommer refaktorisering fra Smalltalk-programmeringsfellesskapet på slutten av 80-tallet og ble popularisert av Martin Fowlers bok ‘Refaktorisering: Forbedring av designet av eksisterende kode’. I Lua innebærer refaktorisering ofte forenkling av komplekse betingelser, oppdeling av store funksjoner til mindre, og optimalisering av tabellbruk for å forbedre ytelsen.
Refaktorisering i Lua har sine forbehold; Lua sin dynamiske natur og fleksible typetilpasning kan gjøre visse refaktoriseringer, som å endre navn på variabler eller endre funksjonssignaturer, riskabelt hvis det ikke gjøres forsiktig. Verktøy for statisk kodeanalyse (som luacheck
) kan redusere slike risikoer. Alternativer inkluderer testdrevet utvikling (TDD), hvor kode kontinuerlig refaktoriseres som en integrert del av utviklingsprosessen, i motsetning til en separat refaktoriseringsfase.
Se også
- “Programmering i Lua” av Roberto Ierusalimschy for beste praksis og eksempler.
- “Refaktoring: Forbedring av designet av eksisterende kode” av Martin Fowler for prinsipper som gjelder på tvers av språk.
- LuaRocks-katalogen (https://luarocks.org/) for verktøy og moduler rettet mot vedlikehold og refaktorisering av Lua-kode.