是否仍建议使用 MooseX::Method::Signatures,或者是否有更好的替代方案?

发布于 2024-10-06 17:28:11 字数 74 浏览 7 评论 0原文

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

My team recently decided to move away from MooseX::Declare. Is using MooseX::Method::Signatures on its own the best alternative?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尤怨 2024-10-13 17:28:11

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

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

所以我认为有多种选择:

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

所以说真的,他们都有自己特别有趣的坏处。最近我一直在结合手动验证和 Params::Util,但我不愿意说这是最好的方法。我将把我的“最佳实践”放在 MX::Types + MX::Params::Validate 上,但由于某种原因,我自己没有动力使用它。

——乔恩

Courtesy of Jon Rockway, who is too lazy to change his proxy:

My take is that for ease of debugging, it’s best not to use either. They don’t introduce many problems of their own (the slow startup time is Class->meta->make_immutable, which you would do anyway), but they do introduce problems when interacting with other tools. Devel::Cover, Devel::NYTProf, perlcritic, perltidy, etc., require various degrees of tweaking in order to be usable. You have to weigh the syntax sugar against the inability to use certain tools as easily.

So I think there are various options:

  • MooseX::Declare – less typing; ease in being accurate; ease of extensibility
  • MooseX::Method::Signatures – a little more typing, a little less accuracy; you have to worry about “use namespace::autoclean” or “no Moose”, you have to worry about make_immutable, you have to return a true value, etc.
  • MooseX::Params::Validate – now we’re back to normal Perl; same validations as MX::Method::Signatures, and same drawbacks. But now all your tools work. Only problem is that the syntax is ugly – my eyes, the goggles do nothing!
  • Parms::Util – simple way to get “correct” validations, acceptable syntax, but less flexible; does not integrate with MooseX::Types like MX::Params::Validate
    Doing it manually – simple, usually correct, easy to understand. But it’s easy to be tempted into being lazy; allow a CODE ref, but not objects with a CODE overload; “ref $foo” instead of “ref $foo && blessed $foo && $foo->isa(‘ClassName’); etc.

So really, they’re all bad in their own special fun ways. Lately I have been doing a combination of manual validation and Params::Util, but I’m not willing to say that’s the best way to do things. I’m going to weight my “best practice” towards MX::Types + MX::Params::Validate, but for some reason, I’m not motivated to use it myself.

--Jon

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文