如何命名 perl 模块,SomeModule vs Some::Module
How to name perl module, SomeModule vs Some::Module
是否有任何首选的 perl 模块命名约定?
例如,在 perl 世界中更常见的做法是什么 - SomeModule
或 Some::Module
?也许在某些情况下,一种风格比另一种风格更好?
如果您查看 CPAN,您会发现,总的来说,模块名称的第一部分被组织到顶级类别中,每个模块在该类别中都有一个独特的名称。例如,前十个类别(按分布计数)是
Net
App
WWW
Test
Data
Catalyst
Acme
Text
Dist
HTML
名称的第二部分通常是在该类别的所有其他模块中识别它(例如 HTML::TreeBuilder
),或者作为大类别的细分(例如 Net::FTP::*
模块)
名称可能有第三部分,它表示整个集合的组件模块(例如 DBIx::Class::Relationship
和 DBIx::Class::ResultSet
)或从另一个子类化的单独模块(喜欢HTML::TreeBuilder::XPath
)
很长一段时间以来,上传到 CPAN 的模块名称都无法控制,其中的某些部分可能有点乱。然而,它确实代表了一组已定义且不断增长的名称,您应该尽量避免使用您自己的包标识符。你的例子不太现实,但我可能会选择 SomeModule
,因为在每对单词之间插入一对冒号绝对 不是 的方式
如果您有多个模块,您可以开始将它们集中到类别中,如果您使用顶级类别(如 Site
或 Company
)来避免与任何模块发生冲突,这将会有所帮助您可以使用的 CPAN 模块。例如 Site::Utils::Matrices
和 Site::Utils::StringProcessing
一个主要规则是您的包名称应采用 CamelCase,因为所有小写名称都保留给 Perl pragmas
因为 stevieb's solution has been deleted, it's worth me reposting a link to brian d foy's excellent On The Naming of Modules 提出了很多要点
这取决于您是否打算将您的模块放在 CPAN 上。如果你把它放在 CPAN 上,你应该阅读 perldoc perlmodstyle
无论如何。但是,如果您只是私下使用模块,那么最相关的一点是 ::
用于表示目录层次结构。例如:
use lib 'my_module';
use Some::Module;
这会在目录 "my_module" 中的名为 "Some" 的文件夹中加载名为 "Module.pm" 的模块。
这不要与包名混淆,后者通常也使用 ::
。对于包名,::
通常用于表示包之间的概念层次或关系,例如类和sub-类。
是否有任何首选的 perl 模块命名约定?
例如,在 perl 世界中更常见的做法是什么 - SomeModule
或 Some::Module
?也许在某些情况下,一种风格比另一种风格更好?
如果您查看 CPAN,您会发现,总的来说,模块名称的第一部分被组织到顶级类别中,每个模块在该类别中都有一个独特的名称。例如,前十个类别(按分布计数)是
Net
App
WWW
Test
Data
Catalyst
Acme
Text
Dist
HTML
名称的第二部分通常是在该类别的所有其他模块中识别它(例如 HTML::TreeBuilder
),或者作为大类别的细分(例如 Net::FTP::*
模块)
名称可能有第三部分,它表示整个集合的组件模块(例如 DBIx::Class::Relationship
和 DBIx::Class::ResultSet
)或从另一个子类化的单独模块(喜欢HTML::TreeBuilder::XPath
)
很长一段时间以来,上传到 CPAN 的模块名称都无法控制,其中的某些部分可能有点乱。然而,它确实代表了一组已定义且不断增长的名称,您应该尽量避免使用您自己的包标识符。你的例子不太现实,但我可能会选择 SomeModule
,因为在每对单词之间插入一对冒号绝对 不是 的方式
如果您有多个模块,您可以开始将它们集中到类别中,如果您使用顶级类别(如 Site
或 Company
)来避免与任何模块发生冲突,这将会有所帮助您可以使用的 CPAN 模块。例如 Site::Utils::Matrices
和 Site::Utils::StringProcessing
一个主要规则是您的包名称应采用 CamelCase,因为所有小写名称都保留给 Perl pragmas
因为 stevieb's solution has been deleted, it's worth me reposting a link to brian d foy's excellent On The Naming of Modules 提出了很多要点
这取决于您是否打算将您的模块放在 CPAN 上。如果你把它放在 CPAN 上,你应该阅读 perldoc perlmodstyle
无论如何。但是,如果您只是私下使用模块,那么最相关的一点是 ::
用于表示目录层次结构。例如:
use lib 'my_module';
use Some::Module;
这会在目录 "my_module" 中的名为 "Some" 的文件夹中加载名为 "Module.pm" 的模块。
这不要与包名混淆,后者通常也使用 ::
。对于包名,::
通常用于表示包之间的概念层次或关系,例如类和sub-类。