应该使用单个文件还是多个文件脚本?

我正在使用 Java 创建一个使用脚本的程序。我想知道是否应该将脚本拆分为每个脚本一个文件(更真实地说,每种脚本如“数学脚本”和“账户脚本”等),还是应该使用一个聚合文件包含所有脚本。

如果可能的话,我希望从技术角度而不是实用角度得出答案,因为这个问题已经解释了实用面的内容(分离经常修改的脚本和大型脚本)。

点赞
用户1020123
用户1020123

就技术性能方面而言,有人可能会认为使用单个全局变量实例更有效率,因为任何库只需加载一次,而不是多次加载。然而,使用多个文件的问题实际上取决于具体情况。多个物理 lua 文件可以使用相同的 Globals 加载,或者也可以使用 Globals 实例来加载一个文件,无论是哪种方式,Globals 表结束时包含的数据量都相同,无论是否从多个文件中加载它。如果为每个文件使用多个 Globals,那么情况就不是这样了。

这类问题实际上取决于你想要在 lua 中实现的目标。使用单个 Globals 实例可以更有效地使用内存,但除此之外并不会真正提高任何性能。与单个文件相比,加载多个文件可能需要稍微更长的时间,因为需要打开和关闭文件句柄,但这只是微观优化,不值得为了将所有代码写在单个文件中而付出的麻烦,更不用说如何高效组织它了。

使用多个 Globals 的确有一些优点,每个 Globals 实例都有自己的全局存储空间,因此更改一些内容,例如重载对象元表上的操作符或覆盖函数,不会影响其他实例。如果这对你不是问题的话,我的建议可能是在多个文件中编写代码,并使用单个 Globals 实例加载它们。但是,如果你这样做,请务必适当组织所有文件的结构。如果你经常使用全局作用域,你可能会发现跟踪对象名称变得困难,并且易于通过命名相同的值意外修改来自其他文件的值。为了避免这种情况,每个文件可以在其自己的表中定义所有功能,然后这些表作为单独的模块工作,可以根据表选择功能,就像从特定文件中选择一样。

最终这并没有太大区别,但基于你的选择,你可能需要确保代码良好的组织。

使用多个 Globals 占用更多的内存,但可以让每个文件拥有其自己的自定义库,而不影响其他文件,但需要更多结构管理来保持所有文件的组织。

使用单个 Globals 占用更少的内存,但所有文件共享相同的全局作用域,使得定制库更加困难,需要更多从 Lua 软件端进行结构组织以防止名称和其他功能冲突。

例如,如果你打算让其他用户通过插件系统使用你的 Lua API 添加到你的软件中,那么你可能希望使用多个 Globals 实例,因为要求用户确保他们的代码不会与其他插件冲突是不仅危险的,而且是不必要的负担。一个经验不足的用户来创建一个插件,不适当地组织它,就可能会破坏软件或软件插件的某些部分。

2016-08-24 00:36:45