tinita: Blocks zur Quelltext-Strukturierung

Beitrag lesen

Meine Herren,

Ich bin kein Herr, aber ich darf hoffentlich trotzdem antworten.

Gibt es irgendwelche Gründe die dagegensprechen Blöcke zur Quelltext-Strukturierung einzusetzen?

In deinem Beispiel sehe ich jetzt keinen sinnvollen Einsatz. Da tut es auch ein Kommentar.

In perl gibt es auch labeled blocks. Dort kann man auch Schleifen mit einem Label versehen.

Beispiele in perl:

FOO: for my $thread (@threads) {  
    ...  
    for my $article (@articles) {  
        last FOO if $article->blah;  
    }  
}

Man kann also in einer inneren Schleife die äussere beenden, ohne sich umständlich eine Statusvariable zuzulegen, die man in der äusseren schleife abfragen muss.

Bei einfachen Blöcken kann man es auch zur Vermeidung von verschachtelten if/elsifs verwenden

  
my $file;  
UPLOAD: {  
  
    last UPLOAD if length($data) > ...;  
  
    my $mimetype = get_mimetype($data);  
    last UPLOAD unless exists $allowed_types{ $mimetype };  
  
    my ($x, $y) = get_size($data);  
    if ($x > 100 or $y > 100) {  
        last UPLOAD;  
    }  
  
    # everything ok  
    $file = save_data($data);  
}  
# weiter mit $file  
if (defined $file) {  
    ...  
}  

Sowas lässt sich alternativ nur mit einer eigenen Funktion und return lösen (was bei längerem Code dann auch sinnvoll ist), oder mit Exceptions. Ich setze sowas ab und zu ein.