Почему "use namespace:: autoclean" предпочитает "no Moose"?
Часто замечаемая рекомендация по лучшим методам в отношении Moose
заключается в следующем:
"Бит использования namespace::autoclean
- это просто хорошая гигиена кода, поскольку он удаляет импортированные символы из пространства имен классов в конце цикла компиляции пакета, включая ключевые слова Moose
. После того, как класс был создан, эти ключевые слова не требуется. (Это предпочтительнее разместить no Moose
в конце вашего пакета)."
Взято для Moose::Manual::BestPractices (внимание мое).
Я понимаю все, что касается цитаты выше, кроме одного: почему использование namespace::autoclean
предпочтительнее использования no Moose
в конце лексической области?
Это просто потому, что namespace::autoclean
более универсален, что позволяет использовать больше опций в его использовании или есть что-то неотъемлемое для того, как оно было реализовано (возможно, специально для классов Moose
), что делает его более надежным?
Я не нашел никакой документации, разъясняющей это, и я бы очень хотел знать правильный ответ.
Ответы
Ответ 1
no Moose
избавляется только от тех функций, которые импортируются с помощью use Moose
. use namespace::autoclean
избавляется от всех импортированных функций.
Если вы всегда используете namespace::autoclean
, вам не нужно забывать переключать no Moose
на use namespace::autoclean
, если вы позже вернетесь и импортируете функцию из некоторого модуля. В противном случае вы можете забыть это сделать.