根据继承和组合来组织模块:最佳实践

时间:2013-06-17 07:42:57

标签: perl organization

我需要组织一组模块。它看起来有点像:

A.pm                    # Inherits from A_base
A_collection.pm         # Collection of a large number of instances of A
A_base.pm

我目前的结构如下:

.
|-- bin
|   `-- Main.pl
|-- lib
|   |-- A_base
|   |   `-- A.pm
|   `-- A_base.pm
`-- t

这样,当我引用 A.pm 时,它变为...::A_base::A,表示A_base是父。 将A_collection.pm放入此结构的合理位置是什么?这种结构是对的吗?

1 个答案:

答案 0 :(得分:5)

好吧,A_base::A只表示来自A_base的继承权,如果这是您正在使用的惯例。对于任何此类都没有基于perl的要求。

您可能更喜欢以下内容:

A             - User typically uses these, inherits A::Base
A::Base       - base-class for A
A::Collection - lots of A's
A::Alt        - Alternative to "A", inherits A::Base
A::Plugin::X  - A plugin that does X

使用perl模块的主要约定AFAIK是顶级名称应该是"主题"。您可能想要浏览,例如Log::Dispatch层次结构,或者MooX下的Moo扩展,也许是MooX::Types。这些都不会在命名中遵循父/子层次结构。