代码之家  ›  专栏  ›  技术社区  ›  Geo

在perl子例程中使用标签被认为是一种坏做法吗?

  •  9
  • Geo  · 技术社区  · 15 年前

    我发现在perl子例程中使用标签,从多个循环中分离出来,或者用更新的变量重做一些部分,非常有帮助。社区如何看待这种编码风格?在子例程中使用标签不受欢迎吗?

    3 回复  |  直到 15 年前
        1
  •  17
  •   innaM    15 年前

    不,它们正是你所描述的目的,我认为它们是语言的一个很好的特点,使用得太少了。

    另一方面,每当我发现自己在考虑标签的使用时,我也会想我的代码是否需要一点重构。

        2
  •  12
  •   Michael Carman    15 年前

    使用标签 next , last redo 很好,但是您应该停下来考虑代码结构是否是最好的。根据我的经验,除了封闭循环(这意味着您不需要使用标签)之外,您几乎不需要在任何东西上使用这些运算符。

    使用 goto LABEL 非常气馁。

        3
  •  8
  •   Brad Gilbert    15 年前

    通常没有理由使用 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;
      }
    }
    
    推荐文章