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: 10Refaktoriser 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: 10Den 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.