2009-10-28 11 views
9

Perlサブルーチン内のラベルを使用して、複数のループから壊れたり、更新された変数でいくつかの部分をやり直したりするのは非常に便利です。このコーディングスタイルはコミュニティによってどのように見られますか?サブルーチン内のラベルを使用しているのですか?Perlサブルーチンのラベルを使用するのが悪いと思われますか?

答えて

17

いいえ。あなたの記述目的とまったく同じですが、私はあまり使用されない言語の素晴らしい機能だと考えています。

一方、私は自分自身でラベルの使用を熟考すると、自分のコードが少しのリファクタリングを必要としているかどうか疑問に思います。

+1

、私はコードがラベルの使用と明確だと思います。もはやそれらを使用しないようにコードを書き換えることは、通常、多くの行の余分なコードにつながります。 – Geo

+2

時々そうですが、時にはそうではありません。私はいつも読んで理解しやすいコードを求めています。時にはそれがラベルを使用するコードです。 – innaM

+2

Perlベストプラクティスはラベルを優先しています。私はすべてのPBPに同意しませんが、これは良いアドバイスの1つだと思います。他に何も書かれていなければ、それらは文書として役立つ – hobbs

12

nextlastredoのラベルを使用するのは問題ありませんが、コード構造が最適かどうかを検討するためには一時停止する必要があります。私の経験では、これらの演算子を囲むループ以外で使用することはめったにありません(つまり、ラベルを使用する必要はありません)。

goto LABELを使用することは強くお勧めします。

8

通常、goto LABELを使用する理由はありません。例えば

my $i = 10; 
Label: 
# ... 
goto Label if --$i; 

がより良いように記述されています:

my $i = 10; 
{ 
    # ... 
    redo if --$i; 
} 

私はラベルの使用を考えることができる唯一の理由は、複数のループから抜け出すことですか外側のループを続行する。多くの場合

my $i = 10; 
OUTER: while(1){ 
    # ... 
    while(1){ 
    # ... 
    last OUTER unless --$i; 
    } 
} 
my $i = 10; 
OUTER: { 
    # ... 
    { 
    # ... 
    redo OUTER if --$i; 
    } 
} 
関連する問題