Хотя я не Perl-гуру, я использую Perl, и я могу писать объектно-ориентированные программы как "добрый старый" способ.
Теперь я хотел бы узнать Муса. Я уже (так же) пережевал основную документацию, и мой первый Лось и роли уже работают, но я далеко от понимания того, как на самом деле работает Лось.
Вопрос 1: Абсолютно необходимо понять, как Moose работает над написанием "хороших" программ?
Честно говоря, я не совсем понимаю старую объектную систему. Что-то, что я смутно помню, это то, что это фактически ссылка на структуру данных, но я никогда не исследовал глубже. Мне было достаточно знать, как и когда мне нужно было использовать bless
, autoload
и т.д., И все просто работало. Возможно, некоторые из моих старых модулей могут быть написаны более эффективно. Но для меня они работают и работают хорошо.
Это похоже на Муса? Или кто-то пишет "достаточно-хорошие" программы с Мусом, чтобы понять, как это работает "внутри"?
Вопрос возникает по следующим причинам:
В METACPAN находятся десятки модулей, которые помогают записывать объекты Moose еще проще и проще.
Примеры случайным образом:
- https://metacpan.org/module/MooseX::StrictConstructor (хорошо, легко понять)
- https://metacpan.org/module/MooseX::HasDefaults (нормально, легко)
- https://metacpan.org/module/Method::Signatures::Simple (bump! не знаю, что такое подписи, и этот модуль является "легким" ).
- https://metacpan.org/module/MooseX::AlwaysCoerce/hmm....: (/
- https://metacpan.org/module/MooseX::LazyRequire/hmm...: (/
- https://metacpan.org/module/MooseX::AbstractMethod
- https://metacpan.org/module/MooseX::AttributeShortcuts (Сокращение для общих параметров атрибутов - возможно, это помощник, но, действительно ли полезно узнать?)
и многие-многие другие (не хочу приводить сюда еще 10-20 модулей)
И теперь главный вопрос:
Есть ли хорошие книги с инструкциями, примерами и рекомендациями (передовой практикой) для:
- что из вышеперечисленных модулей рекомендуется регулярно использовать с самого начала?
Вышеупомянутые модули, несомненно, не были разработаны только потому, что у автора просто нет того, что нужно делать. Конечно, они полезны и полезны. Но изучение (читай: пытаясь понять) десятки разных модулей (особенно тех, кто играет с внутренними силами Лося) - чрезвычайно долгий процесс. С другой стороны, если они не используются, мои программы будут излишне сложными, и я буду иметь дело с вещами, которые уже разрешены.
Лось должен быть (и, вероятно,) революционной системой. Только я начинаю заблуждаться.
Изменить. Я только что нашел Reindeer. Вероятно, этот модуль является частичным ответом на вопрос: какие модули полезны для использования с самого начала (или большей части времени)
PS: Я не уверен, что этот вопрос подходит для SO. Если нет, переместите его куда-нибудь или закройте. Я спросил его здесь, потому что сообщество SO-perl - действительно полезное место, и я не знаю, как продолжить изучение Муса.