Роли и читаемость кода

Улучшение использования ролей (Moo::Role или Role::Tiny или что-то еще)

with qw(
    Some::Role
    Some::Other::Role
);
...
some_roles_method();

просто явно импортировать функцию из класса mixin

use Some::Role qw/some_roles_method/;
...
some_roles_method();

они многочисленны и включают дополнительную гибкость, меньшую бухгалтерию (особенно, если импортируется много методов) и не перезаписывают существующие методы.

Но большой недостаток - если вы читаете код и сталкиваетесь с упоминаниями some_roles_method() и вы хотите прочитать функцию, не сразу видно, куда идти. Все, что вы можете сказать, это то, что он не определен в этом файле.

Есть ли хорошие стратегии для этого? Я единственный, кто беспокоит?

1 ответ

Единственное, о чем я могу думать и что я делаю время от времени, - это тщательно документировать все с помощью POD. Но, конечно, это требует большой дисциплины.

use Moo;
with 'Role::Reader', 'Role::Writer';

# ...

=head1 METHODS

=head2 frobnicate

Frobnicates the foo.

=cut

sub frobnicate { ... }

=head2 write_cheque

This method is documented in L<Role::Writer>.

=head2 write_autograph

This method is documented in L<Role::Writer>.

=head2 read_mind

This method is documented in L<Role::Reader>.

=head2 read_book

This method is documented in L<Role::Reader>.

=cut

1; 
Другие вопросы по тегам