2010-12-09 36 views
1

我的团队最近决定放弃MooseX :: Declare。使用MooseX :: Method :: Signatures是最好的选择吗?MooseX :: Method :: Signatures仍然提示,还是有更好的选择?

我的看法是,为便于调试,最好不要要么使用:

+0

另外相关:[简洁MooseX ::声明方法签名验证错误](http://stackoverflow.com/questions/4341116/succinct-moosexdeclare-method-signature-validation-errors) – Ether 2010-12-09 18:19:23

回答

5

乔恩乐伟,谁是懒得改变他代理的礼貌。他们不会引入许多自己的问题(启动时间慢的是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 ref,但不允许带有CODE超载的对象; “ref $ foo”而不是“ref $ foo & &祝福$ foo & & $ foo-> isa('ClassName');等

所以真的,他们都在自己特殊的有趣的方式坏。最近我一直在做手动验证和Params :: Util的组合,但我不愿意说这是做事的最佳方式。我将会对MX :: Types + MX :: Params :: Validate加重我的“最佳实践”,但由于某种原因,我并不愿意自己使用它。

--Jon

相关问题