为什么"使用namespace :: autoclean"更喜欢"no Moose"?

Sér*_*ino 15 perl moose

关于最佳做法的常见建议Moose如下:

"使用namespace::autoclean位只是良好的代码卫生,因为它会在包的编译周期结束时从类的命名空间中删除导入的符号,包括Moose关键字.一旦构建了类,就不需要这些关键字.(这比放置首选no Moose在你的包裹的最后)."

采取Moose ::手册:: BestPractices(强调我的).

我理解上面引用的所有内容,除了一件事:为什么在词法范围的末尾使用namespace::autoclean首选no Moose

是因为namespace::autoclean它更通用,允许使用更多选项,还是有一些内在的实现方式(特别是针对Moose类,可能),使其更可靠?

我没有找到澄清这一点的文件,我非常想知道正确的答案.

cjm*_*cjm 16

no Moose除去那些导入的函数use Moose. use namespace::autoclean摆脱所有导入的功能.

如果你总是使用namespace::autoclean,那么如果你以后回来并从某个模块导入一个函数,你就不必记得切换no Mooseuse namespace::autoclean.否则,你可能会忘记这样做.

  • 如果您计划同时使用重载,`namespace :: autoclean`也会破坏您的代码.对于这种情况,您可能想尝试`namespace :: sweep`. (9认同)
  • 当前`namespace :: autoclean`(v0.28,2015年10月)文档[states](http://stackoverflow.com/questions/9559064/why-is-use-namespaceautoclean-preferred-to-no-moose)"由过载安装的魔术潜艇不会被清理". (2认同)