Some parts of this page were machine translated.
Powered by Yandex.Translate
http://translate.yandex.com/
In der Programmiersprache Perl, wie in vielen anderen Programmiersprachen ist die Konstruktion
if
:
unless
in Perl
In der Programmiersprache Perl, wie in vielen anderen Programmiersprachen ist die Konstruktion
if
:
#!/usr/bin/perl
my $value;
if (!defined $value) {
print 'value must be defined';
}
Der Körper if
wird ausgeführt wenn die Bedingung true zurückgibt.
Aber abgesehen von der Konstruktion if
gibt es noch die umgekehrte Konstruktion unless
. Körper unless
ausgeführt wird
falls die Bedingung ergibt false. Hier ist der Code, der funktioniert genauso wie die Vorherige,
aber geschrieben unter Verwendung des unless
:
#!/usr/bin/perl
my $value;
unless (defined $value) {
print 'value must be defined';
}
Wenn man diese beiden Beispiele, so zeigt sich, dass bei der Verwendung unless
im Code verwendet weniger
Designs (nicht notwendig zu schreiben !
), aber selbst der Code wird länger als 3 Zeichen.
Außerdem muss mehr Druck, bei der Verwendung unless
kann ein weiteres auftreten
Problem. Sagen wir, wir ergänzen müssen unseren Code mit unless
. Jetzt führt er einige
Aktionen wenn in der Variablen $value
befindet sich undef
. Entstanden ist die Aufgabe in eine Aktion auszuführen
bei umgekehrter Situation — wenn in $value
ist alles, aber nicht undef
. Es ist eine Natürliche
Reaktion in dieser Situation anzuhängen else
Block:
#!/usr/bin/perl
my $value;
unless (defined $value) {
print 'value must be defined';
} else {
print 'value is defined';
}
War die funktionierende Code und diesen Code einfach zu schreiben, aber schlechter Code war. Dieser Code ist schwer zu reparieren und zu verstehen. Anstelle dieses Codes müssten gerade schreiben:
#!/usr/bin/perl
my $value;
if (defined $value) {
print 'value is defined';
} else {
print 'value must be defined';
}
Leider, wenn man im Code verwendet unless
, dann gibt es eine große Versuchung, nicht zu ändern, auf if
,
und einfach schreiben else
. Aber aus diesem Grund erweist es sich schlechter Code.
Es wird angenommen, dass die Fähigkeit zu schreiben unless-else
ist das überhaupt ein Fehler im Design der Sprache. Und solche
der Bau sollte einen Fehler ausgeben, anstatt zu arbeiten.
unless
, ebenso wie if
kann in постфиксном Variante:
#!/usr/bin/perl
my $value;
print 'value must be defined' unless defined $value;
Bei der Verwendung постфиксной Aufnahme unless
Probleme unless-else
nicht auftreten, da in diesem
Variante else
überhaupt nirgends eintragen.
Gesamt Empfehlung. Verwenden Sie niemals den Entwurf unless ( $bool ) { ... }
, da dies führt
zu einer Verschlechterung der Lesbarkeit des Codes.
Über die Verwendung von unless
in постфиксном Ausführungsform einer solchen strengen Empfehlungen nicht. Verwenden oder nicht
Postfix unless
ist es Sache der Absprache im Team und Geschmackssache. Der Autor bevorzugt im Allgemeinen nie
nicht verwenden unless
.