1

我正在寻找一种方法来澄清我的 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)

这段代码的问题是,如果textPrinterprintSomeStuff查看printSomeStuff. 虽然使用此示例很容易做到这一点,但通常情况并非如此(在我的场景中强制在文件之间跳跃)。newTextPrinter除了名称相似之外,也没有任何迹象表明可以通过 获得合适的值。

有没有办法让代码更加自我记录并更好地揭示作者的意图?

我更喜欢一种轻量级的方法,并且不尝试模拟基于类的继承。同样,代码优先于文档,否则,工具可以理解的格式的文档优先于自由格式。很明显,我可以只写“参数textPrinter需求printprintBig公共函数”之类的注释,但是如果没有告诉您您在文档中犯的错误,或者当您重构代码并忘记更新它时,这很容易出错。

我正在使用 Lua 5.0 并且对该语言非常陌生。

4

1 回答 1

2

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

有一些格式化的评论处理系统:LuaDoc、LDoc、LDT 文档语言……。不幸的是,没有标准,选择主要取决于用户 IDE 的功能。一些 IDE 甚至会帮助作者格式化注释。

即使没有处理,标记和格式化(在很大程度上)也提高了人类的可读性。所以只要源很容易弹出,它确实有帮助。

打印功能的弹出框文档

于 2016-10-16T16:05:22.610 回答