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

瓦坎·坦卡(Wakan Tanka)

我知道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使用ModuleC中的函数。这是好的设计方法吗?

疾病

最佳实践很容易:每个文件,程序或模块都应指定其所有依赖项。而已。例如,如果脚本需要模块A和B,而模块A需要模块B,则不要指望脚本已加载的模块B-如果其他脚本需要模块A而又不需要模块B,该怎么办?

基于Good Exporter的模块应该使用,@EXPORT_OK并且您应该在使用条款中明确列出导入的子例程。它有助于防止名称冲突。

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

use warnings_;
use diagnostics;

相对

use diagnostics;
use warnings_;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

Angular模块依赖性

来自分类Dev

Angular模块依赖性

来自分类Dev

组织模式下的任务依赖性

来自分类Dev

Webpack:表达模块依赖性

来自分类Dev

模块之间的角度依赖性

来自分类Dev

Drupal 8模块开发依赖性

来自分类Dev

封装内模块依赖性

来自分类Dev

解决正交模块的依赖性

来自分类Dev

包含文件中的循环依赖性

来自分类Dev

Firebase查询过滤断言顺序依赖性和行为怪异

来自分类Dev

导入模块时如何避免导入模块依赖性?

来自分类Dev

结合条件和控件依赖性

来自分类Dev

Gulp,Wiredep和Bower依赖性

来自分类Dev

机架依赖性和薄启动

来自分类Dev

全局和环境依赖性-类型

来自分类Dev

SDKTools和AFNetworking依赖性

来自分类Dev

iOS依赖性管理和打包

来自分类Dev

spark和httpclient依赖性

来自分类Dev

机架依赖性和薄启动

来自分类Dev

SDKTools和AFNetworking依赖性

来自分类Dev

Gradle:将模块依赖性替换为项目依赖性

来自分类Dev

IntelliJ-用对Maven工件的依赖性替换对模块的依赖性

来自分类Dev

Perl-使用指定子目录中的所有模块并自动解决其依赖性

来自分类Dev

顺序依赖性:jQuery未使用browserify定义

来自分类Dev

在-main中调用函数时Clojure顺序依赖性

来自分类Dev

CocoaPod依赖性依赖性

来自分类Dev

如何确保角度模块依赖性得到解决?

来自分类Dev

解决代码中模块之间的相互依赖性