2012-03-04 37 views
15

的上關於Moose最佳實踐經常看到的建議如下:爲什麼「use namespace :: autoclean」首選爲「no Moose」?

「使用namespace::autoclean位就是良好的代碼衛生,因爲它消除了在你的包的編譯週期結束進口從你的類的命名空間的符號,包括Moose關鍵字,一旦建立了類,這些關鍵字就不需要了。(這是將no Moose放置在包的末尾的優選方案)

採取Moose::Manual::BestPractices(強調我的)。

我明白了上面關於報價的一切,除了一兩件事:爲什麼是利用namespace::autoclean在詞法範圍的結束首選使用no Moose

僅僅是因爲namespace::autoclean更通用,允許使用更多選項,或者是否存在實現方式的內在特性(可能專門爲Moose類定製),使其更加可靠?

我發現沒有文件澄清這一點,我很想知道正確的答案。

回答

16

no Moose擺脫了由use Moose導入的那些功能。 use namespace::autoclean擺脫所有導入的功能。

如果您總是使用namespace::autoclean,那麼您不必記得將no Moose切換爲use namespace::autoclean,如果您稍後返回並從某個模塊導入功能。否則,你可能會忘記這麼做。

+9

'namespace :: autoclean'也會打破你的代碼,如果你打算同時使用重載。對於這種情況,你可能想嘗試'namespace :: sweep'。 – friedo 2012-03-05 00:56:17

+1

當前'namespace :: autoclean'(v0.28,2015年10月)文檔[states](http://stackoverflow.com/questions/9559064/why-is-use-namespaceautoclean-preferred-to-no-moose) 「超載安裝的魔術師將無法清理」。 – 2016-05-24 04:05:52

相關問題