Я нахожу, что использование меток внутри подпрограмм Perl, перерыв между несколькими циклами или повторное использование некоторых частей с обновленными переменными очень полезно. Как этот стиль кодирования рассматривается сообществом? Является ли использование меток внутри подпрограмм, нахмуренных?Является ли использование меток в Perl-подпрограммах считающейся плохой практикой?
ответ
№ Они служат именно для вашей цели, и я считаю их приятной особенностью языка, который слишком мало используется.
С другой стороны, всякий раз, когда я нахожу себя в курсе использования ярлыка, я также задаюсь вопросом, нуждается ли мой код в небольшом рефакторинге.
Использование меток с next
, last
и redo
в порядке, но вы должны сделать паузу, чтобы рассмотреть, является ли структура кода лучшей. По моему опыту вам редко приходится использовать эти операторы на чем угодно, кроме замкнутого цикла (что означает, что вам не нужно использовать метку).
Использование goto LABEL
настоятельно не рекомендуется.
Обычно нет причин использовать 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;
}
}
- 1. Является ли сортировка в определении карты считающейся плохой практикой?
- 2. Является ли плохой практикой использование созависимых классов?
- 3. Является ли CORS плохой практикой?
- 4. Является ли это плохой практикой?
- 5. Является ли ActiveRecord плохой практикой?
- 6. Переопределяет метод передачи статической константы, считающейся плохой практикой?
- 7. Является ли переопределение панели инструментов на панели инструментов Android, считающейся плохой практикой?
- 8. Является ли это плохой практикой базы данных?
- 9. Является ли несколько HttpAsyncClient считаться плохой практикой?
- 10. Является ли [var = modify (var)] плохой практикой?
- 11. Является ли это плохой практикой MVVM?
- 12. Является ли дескриптор заголовка typedef плохой практикой?
- 13. Является ли циклическая ссылка плохой практикой?
- 14. Является ли такой метод bool плохой практикой?
- 15. Является ли это плохой практикой кодирования?
- 16. Является ли это плохой практикой для droppable?
- 17. Является ли использование Javascript внутри функции jQuery плохой практикой?
- 18. Считается ли плохой практикой использование абсолютного позиционирования?
- 19. Являются ли фреймы «плохой практикой»?
- 20. Является ли #include <../header.h> плохой практикой в C++?
- 21. Является ли плохой практикой иметь несколько классов в одном файле?
- 22. Является ли это плохой практикой программирования в Android?
- 23. Является ли NonShared DbContext в MVC плохой практикой?
- 24. Является ли плохой практикой идентификатор каждого (используемого) элемента в html?
- 25. Является ли создание объекта в геттерах плохой практикой?
- 26. Является ли подкласс в Objective-C плохой практикой?
- 27. Является ли это плохой практикой для хранения паролей в PHP?
- 28. Является ли before_action/filter в application_controller.rb плохой практикой?
- 29. Является ли typedef внутри тела функции плохой практикой программирования?
- 30. Является ли использование Scalariform встроенной библиотекой, считающейся заброшенной?
В большинстве случаев, я думаю, что код лучше с использованием меток. Код перезаписи, чтобы он больше не использовал их, обычно приводит ко многим строкам дополнительного кода. – Geo
Иногда это происходит, иногда это не так. Я всегда использую код, который легче читать и понимать. Иногда это код, который использует метки. – innaM
Perl Best Practices поддерживает этикетки. Я не согласен со всем PBP, но я думаю, что это один из его полезных советов. Они служат документацией, если ничего другого. – hobbs