perl – Moose vs. MooseX :: Declare

前端之家收集整理的这篇文章主要介绍了perl – Moose vs. MooseX :: Declare前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
片尾曲

MooseX :: Declare不再被任何人推荐,因为它依赖于服务于其目的但本身已经过时的Devel :: Declare。在这一点上,如果有人想要MX :: D,他们应该看看Moops

原版的

假设我已经有一个体面的老式Perl OO的知识,并且假设我要在Moose的一些风格中编写一些新的代码(是的,我知道有一个表现打击),我想知道如果更深入到兔子洞我希望我选择了另一条路吗?你们这个僧人可以用Moose vs. MooseX::Declare(或其他一些?)的相对优点来启发我吗?我们应该选择切换,他们是如何互换,一个一个而另一个是另一个。

(p.s.我可以回答这个问题,但是我认为形式良好的答案可能能够避免主观性)

解决方法

MooseX :: Declare基本上是Moose的糖语法。他们是,对于解析器以外的所有东西,他们所产生的一切都是相同的。 MooseX ::声明只是产生更多的,写的很少。

作为一个喜欢MooseX :: Declare语法的人,但是更倾向于将所有的代码写在普通的Moose中,所以这些权衡主要是在开发和可维护性方面。

比较笔记的基本项目列表:

> MooseX :: Declare有更简洁的语法。在普通旧的Perl对象(PO​​PO?)中需要数百行的事情,可能在Moose中可能需要50行,在MooseX :: Declare中可能需要30行。 MooseX :: Declare的代码对我来说更加可读和优雅。
> MooseX :: Declare意味着你有免费的MooseX :: Types和MooseX :: Method :: Signatures。这导致了非常优雅的方法foo(Bar $ bar,Baz $ baz){…}语法,导致人们在Ruby中几年后回到Perl。
> MooseX :: Declare的缺点是有些错误信息比Moose更加隐蔽。 TypeConstraint验证失败的错误可能会发生在MooseX :: Types :: Structured中的几层深处,并从那里获取到您在代码中的哪个位置,对于系统新增的人来说可能是困难的。麋也有这个问题,但程度较轻。
>龙在MooseX :: Declare中隐藏的地方可能会与隐藏在Moose中的位置有所不同。 MooseX :: Declare努力解决已知的Moose问题(例如with()的时间),但是会引入一些新的注意事项。 MooseX :: Types是一个完全不同的一组问题,从Moose的本机Stringy类型[^ 1]。
> MooseX :: Declare还有另外一个表现。这是MooseX :: Declare开发人员所熟知的,人们正在努力(对于我认为的几个工作价值观)。
> MooseX :: Declare为Moose添加更多的依赖项。我添加这个,因为人们抱怨已经有关于Moose的依赖列表大约20个模块。 MooseX :: Declare增加了另外5个直接依赖关系。总而言之,根据http://deps.cpantesters.org/是Moose 27,MooseX :: Declare 91。

如果您愿意使用MooseX :: Declare,最好的部分是您可以在每个级别之间互换。您不需要在项目中选择一个。如果由于性能需求,这个课程在Moose中更好,或者是由Junior程序员维护,或者被安装在更加严格的系统上。你可以这样做如果该类可以从MooseX :: Declare语法的额外清晰度中受益,那么您也可以这样做。

希望这有助于回答这个问题。

[^ 1]:有些说较少,有人说更多。老实说,Moose的核心开发人员还在争论一下,没有正确的答案。

原文链接:https://www.f2er.com/Perl/172993.html

猜你在找的Perl相关文章