Lua:
重构代码

如何进行:

我们来看一个简单的Lua函数,并对其进行重构。我们从一个计算列表中数字总和的函数开始,但该函数编写时没有太多考虑效率或清晰度:

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})) -- 输出:10

重构为更高效和可读的版本:

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})) -- 依然输出:10

重构的版本去除了多余的内部循环,使用ipairs来清晰地遍历列表。

深入探索

从历史上看,重构起源于80年代末的Smalltalk编程社区,并由Martin Fowler的书《重构:改善既有代码的设计》而普及。在Lua中,重构通常涉及简化复杂的条件判断,将大型函数拆分为小函数,以及优化表的使用以提高性能。

Lua中的重构有其注意事项;Lua的动态性质和灵活的类型系统可能会使某些重构,如重命名变量或更改函数签名,如果不谨慎操作则风险较高。静态代码分析工具(如luacheck)可以减少此类风险。另一种方法是测试驱动开发(TDD),在这种开发过程中,代码的持续重构是开发过程的一个不可分割的部分,与单独的重构阶段形成对比。

另见

  • Roberto Ierusalimschy的《Lua编程》一书,了解最佳实践和示例。
  • Martin Fowler的《重构:改善既有代码的设计》一书,了解适用于多种语言的原则。
  • LuaRocks目录(https://luarocks.org/)提供维护和重构Lua代码的工具和模块。