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