为什么“使用namespace :: autoclean”首选“no Moose”?

时间:2012-03-04 21:41:24

标签: perl moose

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

  

“使用namespace::autoclean位只是良好的代码卫生,因为它会在程序包编译周期结束时从类的命名空间中删除导入的符号,包括Moose个关键字。一旦构建了类,这些关键字不是必需的。(最好将no Moose放在套餐的末尾)。“

采取Moose::Manual::BestPractices(强调我的)。

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

仅仅是因为namespace::autoclean更通用,允许使用更多选项,或者是否有实现它的内在方式(可能是专为Moose类而定制的)它更可靠吗?

我发现没有文件澄清这一点,我非常想知道正确的答案。

1 个答案:

答案 0 :(得分:16)

no Moose仅删除use Moose导入的那些函数。 use namespace::autoclean删除了所有导入的函数。

如果您始终使用namespace::autoclean,那么如果您稍后返回并从某个模块导入某个功能,则无需记住将no Moose切换为use namespace::autoclean。否则,你可能会忘记这样做。