In letzter Zeit habe ich beschlossen, Perl::Critic häufiger auf meinem Code zu verwenden. Nachdem ich nun seit fast 7 Jahren in Perl programmiert habe, bin ich schon lange mit den meisten Best Practices von Perl vertraut, aber ich weiß, dass es immer noch Raum für Verbesserungen gibt. Eine Sache, die mich jedoch nervt ist die Tatsache, dass Perl::Critic nicht gefällt, wie ich @ _ für Unterprogramme entpacke. Als Beispiel:Warum lehnt Perl :: Critic die Verwendung von shift zum Auffüllen von Unterprogrammvariablen ab?
sub my_way_to_unpack {
my $variable1 = shift @_;
my $variable2 = shift @_;
my $result = $variable1 + $variable2;
return $result;
}
Dies ist, wie ich es immer getan habe, und wie seine auf beiden PerlMonks und Stack-Überlauf diskutiert worden ist, seine not necessarily evil entweder.
Ändern der Codeausschnitt oben ...
sub perl_critics_way_to_unpack {
my ($variable1, $variable2) = @_;
my $result = $variable1 + $variable2;
return $result;
}
... funktioniert auch, aber ich finde es schwerer zu lesen. Ich habe auch Damian Conways Buch Perl Best Practices gelesen und ich verstehe nicht wirklich, wie mein bevorzugter Ansatz zum Entpacken unter seinen Vorschlag fällt, @_
direkt zu verwenden, wie Perl::Critic impliziert. Ich habe immer den Eindruck, dass Conway spricht über Bösartigkeit wie:
sub not_unpacking {
my $result = $_[0] + $_[1];
return $result;
}
Das obige Beispiel ist schlecht und schwer zu lesen, und ich würde nie die Ansicht, dass der Produktionscode in einem Stück zu schreiben.
Also kurz gesagt, warum Perl::Critic meinen bevorzugten Weg schlecht betrachten? Mache ich wirklich ein abscheuliches Verbrechen, indem ich die Schicht auspacke?
Wäre das etwas, das andere Leute als ich denken sollten mit den Perl::Critic Betreuer aufgewachsen sein?
Bei einer Schätzung, Perl :: Critic mag es nicht, weil es funktioniert mit "Magie", wie zum Beispiel 'shift' auf' @ _', wenn keine Variable angegeben ist. Es wäre hilfreich zu wissen, welche Perl :: Critic-Regel dies ändern möchte. – Powerlord
Wenn Sie die Listenform der Zuweisung verwenden, kann Komodo Edit/IDE Ihnen die Argumente für eine Subroutine mitteilen. –
Dank Brad, das habe ich nicht bemerkt. Ich bin ein alter ViM-Benutzer, also ignoriere ich normalerweise, was Komodo Edit mir vorsetzt, aber ich habe mich immer gefragt, wie das funktioniert. – Weegee