0

我正在用 Java 创建一个使用脚本的程序。我只是想知道我是否应该将我的脚本拆分为每个脚本的一个文件(更现实的是每种类型的脚本,如“数学脚本”和“帐户脚本”等),或者我是否应该为所有脚本使用一个聚集文件。

如果可能的话,我正在从更多的技术角度而不是实际的角度寻找答案,因为这个问题已经解释了实际的一面(分开经常修改的脚本和大型脚本)。

4

1 回答 1

0

就技术性能影响而言,有人可能会争辩说,使用单个 Globals 实例实际上更有效,因为任何库都只加载一次而不是多次。然而,关于使用多个文件的问题确实取决于。可以使用相同的 Globals 加载多个物理 lua 文件,也可以使用 Globals 实例加载单个文件,无论是否从多个文件加载,Globals 表最终包含相同数量的数据。如果您对每个文件使用多个全局变量,则情况并非如此。

像这样的问题实际上取决于您希望使用 lua 的预期目标。使用单个 Globals 实例将更有效地使用 RAM,但除此之外不会真正提高任何性能。加载多个文件与单个文件相比可能需要稍长的时间,因为打开和关闭文件句柄的时间,但这是一个如此微的优化,它严重不值得将所有代码写入单个文件中的麻烦,更不用说有效地组织它是多么困难。

使用多个 Globals 也有一些优点,但是,每个 Globals 实例都有自己的全局存储,因此更改某些内容,例如在可元表对象上重载运算符或覆盖函数不会延续到其他实例。如果这对您来说不是问题,那么我的建议可能是在多个文件中编写代码,并使用单个 Globals 实例将它们全部加载。但是,如果您这样做,请注意正确构建所有文件,如果您经常使用全局范围,您可能会发现跟踪对象名称变得很困难,并且很容易通过将其他文件命名为相同来意外修改其他文件的值。为了避免这种情况,每个文件都可以在自己的表格中定义其所有功能,然后这些表格作为单独的模块工作,您可以在其中根据表格选择功能,

最后,它实际上并没有太大的区别,但是根据您选择的不同,您可能需要注意确保代码的良好组织。

使用多个全局变量需要更多 RAM,但可以允许每个文件拥有自己的自定义库而不影响其他文件,但代价是需要从软件的 Java 端进行更多的结构管理以保持所有文件的组织。

使用单个 Globals 占用更少的 RAM,但所有文件共享相同的全局范围,这使得库的自定义版本更加困难,并且需要从软件的 Lua 端进行更多的结构化组织,以防止名称和其他功能发生冲突。

例如,如果您打算让其他用户使用您的 Lua API 通过插件系统添加到您的软件中,您可能希望使用多个 Globals 实例,因为要求创建插件的用户负责确保他们是代码不会与其他插件冲突不仅危险,而且是不需要存在的负担。一个没有经验的用户试图制作一个插件,没有正确组织它,并且可能会弄乱软件或软件插件的某些部分。

于 2016-08-24T00:36:45.647 回答