Ответ 1
Пока я не согласен с введением Flimzy ( "Я не использовал Moose, но я использовал эту вещь, которая использует Moose" ), я согласен с его посылкой.
Используйте то, что, по вашему мнению, может дать наилучшие результаты. Если (или) цель состоит в том, чтобы научиться эффективно использовать Муса, то используйте Муз. Если цель состоит в том, чтобы создать хороший код и обучение Moose было бы отвлечением на, тогда не используйте Moose.
Однако ваш вопрос является открытым (как указывали другие). Нет ответа, который будет общепринятым как истинный, иначе коэффициент усыновления Муз будет намного выше, и я бы не ответил на это. Я могу только объяснить, почему я предпочитаю использовать Муса каждый раз, когда я начинаю новый проект.
Как цитирует Сид из документации Moose. Основная цель Moose - быть более чистым, стандартизованным способом делать то, что программисты, ориентированные на объект Perl 5.0, были выпущены. Он обеспечивает ярлыки, чтобы сделать правильное дело проще, чем делать неправильную вещь. Что-то, что, на мой взгляд, отсутствует в стандартном Perl. Он предоставляет новые инструменты, облегчающие абстрагирование проблемы с более легкими решениями, и обеспечивает надежный API интроспекции и метапрограммирования, который пытается нормализовать beastiary, который взламывает внутренние элементы Perl из пространства Perl (то есть, что я использовал для обозначения как "Символьная таблица колдовства" ).
Я обнаружил, что мое естественное ощущение того, сколько кода "слишком много", было уменьшено на 66% с тех пор, как я начал использовать Moose [^ 1]. Я обнаружил, что я более легко следую хорошим принципам дизайна, таким как инкапсуляция и скрытие информации, поскольку Moose предоставляет инструменты, чтобы упростить их работу. Поскольку Moose автоматически генерирует большую часть котельной плиты, которую я обычно должен был бы выписать (например, методы доступа, методы делегата и другие подобные вещи), я нахожу, что легче быстро ускорить то, что я делал шесть месяцев тому назад. Я также нахожу, что пишу гораздо менее хитрый код, чтобы сэкономить несколько нажатий клавиш, чем у меня несколько лет назад.
Можно написать чистый, прочный, элегантный объектно-ориентированный Perl, который не использует Moose [^ 2]. По моему опыту это требует больше усилий и самоконтроля. Я обнаружил, что в тех случаях, когда проект требует, я не могу использовать Moose, мой обычный объектно-ориентированный код выиграл от привычек, которые я выбрал из Moose. Я думаю об этом так же, как я бы подумал о написании его с Moose, а затем напечатал в три раза больше кода, чем я записываю то, что, как я ожидаю, будет генерировать Moose для меня [^ 3].
Поэтому я использую Moose, потому что я нахожу, что это делает меня лучшим программистом, и из-за этого я пишу лучшие программы. Если вы не обнаружите, что это тоже верно для вас, то Moose - неправильный ответ.
[^ 1]: Раньше я начинал думать о моем дизайне, когда я достиг ~ 300 строк кода в модуле. Теперь я начинаю беспокоиться о ~ 100 линиях.
[^ 2]: Код Миягавы в Твигги - отличный пример, который я читал только сегодня.
[^ 3]: Это не универсально. Существует несколько историй о людях, которые пишут менее ремонтируемый, ужасный код, перейдя за борт с инструментами, которые предоставляет Moose. Плохие программисты могут писать плохой код в любом месте.