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

Dyl*_*ali 1 perl moose

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

Dyl*_*ali 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 && blessed $ foo && $ foo-> isa('ClassName'); 等等

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

--Jon