是MooseX :: Method :: Signatures仍然建议,还是有更好的选择?

时间:2010-12-09 17:40:40

标签: perl moose

我的团队最近决定放弃MooseX :: Declare。使用MooseX :: Method :: Signatures本身就是最好的选择吗?

1 个答案:

答案 0 :(得分:5)

由Jon Rockway提供,他懒得改变他的代理人:

我的看法是,为了便于调试,最好不要使用它们。它们没有引入很多自己的问题(启动时间很慢是Class-> meta-> make_immutable,无论如何都会这样做),但它们在与其他工具交互时确实会引入问题。 Devel :: Cover,Devel :: NYTProf,perlcritic,perltidy等,需要不同程度的调整才能使用。您必须权衡语法糖与无法轻松使用某些工具。

所以我认为有各种选择:

  • MooseX ::声明 - 少打字;容易准确;易于扩展性
  • MooseX :: Method :: Signatures - 打字更多一点,准确度稍差;你必须担心“使用namespace :: autoclean”或“no Moose”,你必须担心make_immutable,你必须返回一个真值等。
  • MooseX :: Params :: Validate - 现在我们恢复正常的Perl;与MX :: Method :: Signatures相同的验证,以及相同的缺点。但现在你所有的工具都可以使用唯一的问题是语法难看 - 我的眼睛,护目镜什么都不做!
  • Parms :: Util - 获得“正确”验证,语法可接受但灵活性较低的简单方法;不与MooseX集成::类似MX :: Params :: Validate 手动完成 - 简单,通常正确,易于理解。但很容易被诱惑变得懒惰;允许CODE引用,但不允许CODE超载的对象; “ref $ foo”而不是“ref $ foo&&祝福$ foo&& $ foo-> ISA(“类名”);等

所以,他们以自己特别有趣的方式表现糟糕。最近我一直在做手动验证和Params :: Util的组合,但我不愿意说这是最好的做事方式。我将对MX :: Types + MX :: Params :: Validate进行“最佳实践”,但由于某种原因,我没有动力自己使用它。

- 乔恩