current version (0.98)Moose::Manual::MooseX中是以下几行:



我注意到,对于 MooseX::Method::Signatures ,2009年9月的change log提到删除了“可怕的ALPHA免责声明”。
那么,这些仍然是“alpha”吗?
我仍然会被认为是使用它们的“更疯狂”之一吗?

最佳答案

我会说它们已经准备好投入生产-我正在生产中使用它们-但有几件事情要考虑:
表现
MooseX::Declare 和依赖项在编译时几乎发挥了所有作用。根据程序的大小,您可能会发现半秒钟到几秒钟的额外初始化开销。如果这是一个问题,请不要使用MooseX::Declare
在运行时,主要的开销是类型和参数检查,无论如何,您都应该(理想情况下)进行检查。也就是说,Moose类型约束有一些开销,即强制约束和更复杂的(MooseX::Types::Structured-style)约束。如果性能是一个问题,请不要使用它们。
稳定
MooseX::DeclareMooseX::Method::Signature's外部语法现已稳定。但是重要的是要知道内部结构会受到极端的更改。 (不幸的是,变化越来越好)
为了让您有个想法,签名本身是使用从Perl token 生成器(toke.c)窃取的一大段C代码捕获的。在某些情况下,这可能会中断,因为它实际上没有解析任何内容。括号内的位是使用PPI解析的,后者是为纯Perl设计的,但是随后对生成的PPI树进行了破解以获取有用的东西。 Devel::Declare本身就是一个黑客-在看到特定的关键字(例如'role','class','method')之后,使用Devel::Declare的模块必须手动重写源代码,而不能与真正的Perl解析器进行交互。
极端情况可能会导致Perl出现段错误。或严重重写源代码,因此您会遇到语法错误,但不知道没有-MO::Deparse的原因是什么。如果您不小心弄乱了MooseX::Declare语法,则不能保证模块会检测到该错误并给您一个明显的错误。 ALPHA消息可能已消失,但是内部仍在进行黑暗和可怕的事务,因此您应该为此做好准备。
更新
MooseX::Declare的更新不多,您可能希望查看Moops之类的替代方法。就个人而言,我决定坚持使用纯Moose,直到Perl本身开始本地支持class/method/has语法(即possibly on the cards)为止。

10-07 15:05