Perl 模块依赖组织和包含顺序



我知道perl中的循环模块依赖性以及这是一个非常糟糕的主意,例如:

package ModuleA;
use ModuleB;
package ModuleB;
use ModuleA;

我想问一下以下模型是否安全,以及它是否遵循一些最佳实践规则:

package main;
use ModuleA;
use ModuleB;
package ModuleA;
use ModuleB;
use ModuleC;
package ModuleB;
use ModuleC;

我还想问一下use-ing模块的顺序是否有任何影响?例如,如果

package main;
use ModuleA;
use ModuleB;

package main;
use ModuleB;
use ModuleA;

如果

package ModuleA;
use ModuleB;
use ModuleC;

package ModuleA;
use ModuleC;
use ModuleB;

等。

编辑:请注意,ModuleA 显式加载 ModuleC(并且不要依赖 ModuleB 来加载 ModuleC),因为 ModuleA 使用模块 C 中的函数。这是好的设计方法吗?

最佳实践很简单:每个文件、程序或模块都应指定其所有依赖项。就是这样。例如,如果脚本需要模块 A 和 B,而模块 A 需要模块 B,不要指望脚本已经加载的模块 B - 如果其他脚本需要模块 A 而不需要 B 怎么办?

好的基于导出器的模块应该使用@EXPORT_OK并且您应该在 use-子句中明确列出导入的子例程。它有助于防止名称冲突。

对于只导出子例程的普通模块,顺序无关紧要。在其他情况下,它可能会:考虑

use warnings_;
use diagnostics;

use diagnostics;
use warnings_;

最新更新