Die Verbesserung der Verwendung von Rollen (Moo :: Rolle oder Rollen :: Tiny oder was auch immer)Rollen und die Lesbarkeit des Codes
with qw(
Some::Role
Some::Other::Role
);
...
some_roles_method();
über nur die Funktion aus der mixin Klasse explizit importieren
use Some::Role qw/some_roles_method/;
...
some_roles_method();
sind zahlreiche, und fügen hinzu, Flexibilität, weniger Buchhaltung (vor allem, wenn viele Methoden importiert werden), und nicht bestehende Methoden zu überschreiben.
Aber ein großer Nachteil ist, wenn Sie den Code lesen und Erwähnungen von some_roles_method()
kommen und Sie die Funktion lesen möchten, ist es nicht sofort ersichtlich, wohin zu gehen. Alles, was Sie sagen können, ist, dass es nicht in dieser Datei definiert ist.
Gibt es irgendwelche guten Strategien, um das zu handhaben? Bin ich der Einzige, der stört?
Das ist nicht die einzige Rolle der Rolle ist (kein Wortspiel beabsichtigt). Zum Beispiel, [ 'requires'] (https://www.nu42.com/2010/07/beauty-of-moose-enforcing -interface.html) kann nützlich sein. Wenn Sie sich nicht für den Zucker entscheiden, den diese Module bieten, ist SO nicht der Ort, um darüber zu debattieren. –
Gegeben, wie es heißt, der einzige Ort zu gehen ist das Paket (Klasse). Dann suchen Sie nach 'with' und sehen den Paketnamen der Rolle. Es sollte kein großes Problem sein? – zdim
Lassen Sie mich in Anbetracht Ihres Snippets dies nur für den Fall sagen - Rollen werden mit einer Klasse verwendet und werden von ihr absorbiert (siehe [diesen Beitrag] (https://stackoverflow.com/a/42465412/4653379) zum Beispiel). Dann sollte das Auffinden der Methode kein Problem sein. – zdim