Müssen alle meine Moose-Klassen 'namespace :: autoclean' und 'make_immutable' enthalten oder gibt es eine Möglichkeit, diese standardmäßig zu bekommen?

8

Laut dem Moose Best Practices-Dokument sollten meine Moose-Klassen folgendermaßen aussehen:

%Vor%

Siehe Elch :: Manual :: BestPractices .

Und 99% der Zeit ist das, was ich will, also gibt es eine Möglichkeit, meinen Namespace autoklean zu machen und meine Klassen standardmäßig unveränderlich zu machen, so dass ich diesen Code nicht haben muss?

Vielleicht gibt es einen technischen Grund, warum es nicht möglich ist oder warum es nicht gemacht werden sollte?

Danke

    
nick 22.10.2010, 13:28
quelle

2 Antworten

8

Ich denke das einzige Eine Möglichkeit, dies zu vermeiden, ist MooseX::Declare .

MooseX::Declare ist ein macro , das sich unten in Ihr Beispiel ändert:

%Vor%

Er fügt automatisch namespace::autoclean ein und macht die Klasse unveränderlich.

Um Klassen zu erweitern, tun Sie:

%Vor%

Und zum Hinzufügen von Rollen tun Sie:

%Vor%

Und Sie können diese einfach kombinieren:

%Vor%

Sie erhalten auch einige andere definierte Schlüsselwörter, z. method :

%Vor%

Wenn du deine Klasse änderbar machen willst, dann ist das:

%Vor%


  

Vielleicht gibt es einen technischen Grund, warum es nicht möglich ist oder warum es nicht gemacht werden sollte?

Technisch wäre es schwierig, das alles zusammen zu ziehen. MooseX::Declare verwendet Devel::Declare , um die notwendige Syntax für die zu interpretierende Perl zu erstellen.

Wenn also die Kesselplatte ein Problem für Sie darstellt, sollten Sie MooseX::Declare in Erwägung ziehen. Ich habe es in vielen Projekten ohne Probleme verwendet und finde es ideal, wenn ich schnell eine klassenbasierte App skizzieren kann. Meistens bin ich aber mit dem Boilerplate zufrieden und bleibe bei Standard Moose .

    
draegtun 22.10.2010 14:42
quelle
3

Ich denke MooseX :: MakeImmutable kann es tun du.

    
jira 22.10.2010 17:09
quelle

Tags und Links