Использует маркировки в подпрограммах Perl, которые рассматривают плохой практикой?

Мне нравится Стекло правила 3 когда дело доходит до Повторного использования (который, кажется, то, что Вы интересуетесь).

1) в 3 раза более трудно создать допускающие повторное использование компоненты, чем единственные компоненты использования
2), допускающий повторное использование компонент должен быть испытан в трех различных приложениях, прежде чем это будет достаточно общим для принятия в библиотеку повторного использования

От этого, я думаю, что можно экстраполировать эти заключения

a), Если бы у Вас нет бюджета на 3 раза время, это взяло бы Вас для создания единственного компонента использования, возможно, необходимо удержать на повторном использовании. (Принятие Трудности = Время)
b), Если бы у Вас нет 3 мест, где Вы использовали бы компонент, который Вы создаете, возможно, необходимо удержать при создании допускающего повторное использование компонента.

я все еще думаю, что ООП полезно для создания единственного компонента использования, потому что можно всегда осуществлять рефакторинг его во что-то, что является действительно допускающим повторное использование позже. (Можно также осуществить рефакторинг от PP до ООП, но я думаю, что ООП идет с достаточными преимуществами относительно организации и инкапсуляции для запуска там)

9
задан mikegrb 28 October 2009 в 10:06
поделиться

3 ответа

Нет. Они служат именно той цели, которую вы описываете, и я считаю их приятной особенностью языка, который используется слишком мало.

С другой стороны, всякий раз, когда я задумываюсь об использовании метки, я также задаюсь вопросом, нуждается ли мой код в небольшом рефакторинге.

17
ответ дан 4 December 2019 в 06:30
поделиться

Допустимо использование меток с next , last и redo , но вам следует сделать паузу, чтобы рассмотреть, соответствует ли структура кода лучший. По моему опыту, вам редко нужно использовать эти операторы для чего-либо, кроме охватывающего цикла (что означает, что вам не нужно использовать метку).

Использование goto LABEL настоятельно не рекомендуется.

12
ответ дан 4 December 2019 в 06:30
поделиться

Обычно нет причин использовать 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;
  }
}
8
ответ дан 4 December 2019 в 06:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: