perl – MooseX :: Declare和MooseX :: Method ::签名生产准备好了吗?

前端之家收集整理的这篇文章主要介绍了perl – MooseX :: Declare和MooseX :: Method ::签名生产准备好了吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Moose::Manual::MooseX current version (0.98)的线路:

We have high hopes for the future of
07002 and
07003. However,these
modules,while used regularly in
production by some of the more insane
members of the community,are still
marked alpha just in case backwards
incompatible changes need to be made.

我注意到MooseX::Method::Signatures change log在2009年9月提及“可怕的ALPHA免责声明”的删除.
那么这些还是“阿尔法”呢?
我还会被认为是使用它们更“疯狂”吗?

解决方法

我会说他们已经准备好了 – 我正在生产中使用它们 – 但是有几件事情要考虑:

性能

MooseX::Declare和依赖在编译时几乎全部都是魔术.根据程序的大小,您可能会发现额外的初始化开销在半秒到几秒之间.如果这是一个问题,不要使用MooseX::Declare.

在运行时,主要的开销是类型和参数检查,您应该(理想情况下)要做.也就是说,Moose类型约束有一些开销,即强制和更复杂(MooseX :: Types :: Structured-style)约束.如果性能是一个问题,请不要使用这些.

稳定性

MooseX::DeclareMooseX::Method::Signature’s外部语法现在是稳定的.但是重要的是要知道内部的变化是极端的. (幸运的是,变化更好)

为了给你一个想法,签名本身被使用从Perl标记器(toke.c)中偷走的大量C代码来抓取.这在某些情况下可能会崩溃,因为它实际上并不解析任何东西.方括号内的位使用PPI进行解析,这是专为纯Perl而设计的,但是生成的PPI树被黑客入侵可以获得有用的东西. Devel::Declare本身就是一个黑客 – 在看到具体的关键字(例如“角色”,“类”,“方法”)后,Devel :: Declare使用模块必须手动重写源代码,而不需要与真正的Perl解析器进行交互.

角落案例可能导致Perl发生故障.或者重写源代码,所以你得到语法错误,但不知道导致他们没有-MO :: Deparse.如果您偶然弄乱了MooseX::Declare语法,则不能保证该模块会检测到这一点,并给您一个明智的错误. ALPHA的消息可能已经消失,但是这仍然在内部做黑暗和可怕的事情,你应该做好准备.

UPDATE

MooseX :: Declare没有更新很多,你可能希望看看Moops这样的替代方法.就个人而言,我决定坚持使用纯Moose,直到Perl本身开始支持类/方法/本机语法,这是possibly on the cards.

猜你在找的Perl相关文章