Lua 中的自文档参数

我正在寻找一种方式来澄清我的 Lua 函数的契约。特别是,哪些属性是参数应该具备的。

为了说明我的问题,这里是一些代码片段,展示我的当前代码的典型结构。一个用两个公共函数构建一个新的"实例"的函数。

local function newTextPrinter(color)
    return {
        print = function(textToPrint)
            PrintText(textToPrint, 20, color, 5, 'center');
        end,
        printBig = function(textToPrint)
            PrintText(textToPrint, 30, color, 5, 'center');
        end
    }
end

一个接受一个参数的函数,该参数应具有相同的签名(或超集)。

local function printSomeStuff(textPrinter)
    textPrinter.print("some")
    textPrinter.printBig("stuff")
end

调用后面的函数

local textPrinter = newTextPrinter("ffffffff")
printSomeStuff(textPrinter)

这段代码的问题在于,你无法知道提供给printSomeStufftextPrinter参数应该长成什么样,而不用查看printSomeStuff的实现。虽然通过这个例子很容易做到这一点,但通常情况下并非如此(而且在我的情况下,这样做还需要在文件之间跳转)。还没有提示可以通过newTextPrinter获得一个合适的值,除了名称上的相似之外。

有没有一种方法可以使代码更加自说明,更好地展示作者的意图?

我更喜欢一种轻量级的方法,不会尝试模拟基于类的继承。同样,代码优于文档,如果不行,我更喜欢以工具理解的格式编写文档,而不是自由格式的文档。显然,我只需要写一个注释,比如"参数textPrinter需要具有printprintBig公共函数",但是如果没有任何东西告诉您关于文档中的错误或者在重构代码时忘记更新文档,那么这将非常容易出错。

我使用的是 Lua 5.0,对这种语言还很新。

点赞
用户2226988
用户2226988

是的。首先,命名是关键。接下来,注释可以描述合同。此外,格式化、标记、处理和上下文展示注释是许多人编程的方法。最后,格式化注释中的超链接提供了访问完整文档的途径。

有一些格式化注释处理系统:LuaDoc、LDoc、LDT文档语言,等等。不幸的是,没有标准,选择主要是受用户IDE能力的驱动。一些IDE甚至会帮助作者格式化注释。

即使没有处理,标记和格式化-大多数情况下-都可以提高人的可读性。只要源代码容易弹出来,它就可以帮助。

print功能的弹出式文档

2016-10-16 16:05:22