Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types Lua中的自记录参数_Types_Lua_Readability_Code Documentation_Self Documenting Code - Fatal编程技术网

Types Lua中的自记录参数

Types Lua中的自记录参数,types,lua,readability,code-documentation,self-documenting-code,Types,Lua,Readability,Code Documentation,Self Documenting Code,我正在寻找一种方法来澄清我的Lua函数的契约。特别是,这些参数应该具有哪些属性 为了说明我的问题,我们提供了一些具有当前代码典型结构的代码片段。用两个公共函数构造新“实例”的函数 local function newTextPrinter(color) return { print = function(textToPrint) PrintText(textToPrint, 20, color, 5, 'center'); end,

我正在寻找一种方法来澄清我的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 textPrinter = newTextPrinter("ffffffff")
printSomeStuff(textPrinter)
这段代码的问题是,如果不查看
printSomeStuff
的实现,就无法判断提供给
printSomeStuff
textPrinter
参数应该是什么样子。在本例中,这样做很容易,但通常情况并非如此(在我的场景中,强制在文件之间跳跃)。除了名称上的相似性之外,没有任何迹象表明可以通过
newTextPrinter
获得合适的值

有没有一种方法可以使代码更加自我记录并更好地揭示作者的意图

我更喜欢一种轻量级的方法,而不是试图模仿基于类的继承。类似地,代码优先于文档,否则,工具理解格式的文档优先于自由格式。显然,我可以写一条评论,比如“parameter
textPrinter
needs
print
printBig
public functions”,但是如果没有任何信息告诉您文档中的错误,或者当您重构代码并忘记更新它时,这很容易出错


我正在使用Lua5.0,对这门语言还很陌生。

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

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

即使不进行处理,标记和格式在很大程度上也提高了人类的可读性。因此,只要源代码很容易弹出,它就会有所帮助


可能的复制只是好奇,为什么仍然是Lua 5.0?
local textPrinter = newTextPrinter("ffffffff")
printSomeStuff(textPrinter)