我正在用Java创建一个使用脚本的程序。我只是想知道是否应该将我的脚本分成每个脚本的一个文件(更现实的是每种类型的脚本,如“数学脚本”和“帐户脚本”等),或者我是否应该为所有脚本使用一个丛集文件。
我正在寻求更多技术观点的答案,而不是实际观点,如果可能的话,因为this问题已经解释了实际方面(单独经常修改的脚本和大型脚本)。
答案 0 :(得分:0)
就技术性能影响而言,可以说使用单个Globals实例实际上更有效,因为任何库只加载一次而不是多次。但是关于使用多个文件的问题确实取决于。可以使用相同的Globals加载多个物理lua文件,或者可以使用Globals实例加载单个文件,无论是Globals表包含相同数量的数据,无论是否从多个文件加载。如果为每个文件使用多个Globals,则情况并非如此。
这样的问题实际上取决于您希望使用lua的预期目标。使用单个Globals实例将更有效地使用RAM,但除此之外不会真正提高性能。加载多个文件而不是单个文件可能需要稍长的时间,因为打开和关闭文件句柄的时间,但这是一个微观优化,它不值得在一个单独编写所有代码所需的麻烦文件,更不用说有效组织它有多难。
使用多个Globals有一些优点,但是,每个Globals实例都拥有它自己的全局存储,因此更改某些内容,例如在对象上重载运算符或覆盖的函数不会结转到其他情况。如果这对您来说不是问题,那么我的建议可能是将代码写入多个文件,并使用单个Globals实例加载它们。但是,如果这样做,请小心地正确构造所有文件,如果您经常使用全局范围,您可能会发现跟踪对象名称变得困难,并且通过命名它们相同而容易意外地修改其他文件中的值。为了避免这种情况,每个文件都可以在其自己的表中定义其所有功能,然后这些表作为单独的模块工作,您可以根据表选择功能,几乎就像从特定文件中选择一样。
最后它确实没有什么区别,但根据您的选择,您可能需要注意确保良好的代码组织。
使用多个Globals需要更多RAM,但是可以允许每个文件拥有自己的自定义库而不会影响其他文件,但代价是需要从软件的Java端进行更多的结构管理,以保持所有文件的整理。 / p>
使用单个Globals占用较少的RAM,但所有文件共享相同的全局范围,使得定制版本的库更加困难,并且需要从软件的Lua端进行更多结构组织,以防止名称和其他功能发生冲突。
如果您希望其他用户使用您的Lua API通过插件系统添加到您的软件,您可能希望使用多个Globals实例,因为要求用户创建插件是负责确保他们的代码与其他插件的冲突不仅危险,而且也是一种不需要存在的负担。没有经验的用户试图制作一个插件,没有正确组织它,并且可能搞乱部分软件或软件插件。