Я использую while true loop во многих проектах. Это мне хорошо, и это не слишком сложно. Итак, почему это плохая идея использовать в то время как истинный цикл бесконечно работает фоновые процессы. Спасибо за ваши ответы.Почему пока (правда) это плохая практика?
ответ
Мой руководитель проекта не позволяет такого рода петли в моем коде, он утверждает, что он должен быть заменен
while(!exit_flag)
Это очень спорно , while (!exit_flag)
предполагает, что цикл имеет естественное условие выхода, которое оно достигнет в некоторой конкретной точке само по себе, например. что-то считая от 0 до 100, а затем покидая цикл. Однако, если вы пишете этот цикл, чтобы создать постоянный цикл демона или события, то точкой этого цикла является постоянная работа программы. Ничто не говорит неопределенно лучше, чем while (true)
.
Нет никакой реальной технической разницы между обоими; это просто вопрос читаемости и выражения намерений. Разумеется, вам придется сделать это с людьми, которые в конце будут читать этот код. Если их политика равна while (!exit_flag)
, пусть будет так.
Это не плохая практика, это просто означает, что вы не продумали свой код.
Условие обязано указывать цикл, когда закончить цикл. Если у вас есть конечная точка, то почему бы не назвать ее условием?
var i = 0;
while(true){
i++;
if(i == 100)
break;
}
Это прекрасный код. Но так это:
var i = 0;
while(i != 100){
i++;
}
Оба метода являются правильными, но если кто-то читает ваш код, гораздо легче увидеть, когда цикл остановится итерация, если это прямо в состоянии.
Хм, спросите того, кто утверждал, что это «плохая идея».
Что я мог думать о том, что любая петля, работающая на неопределенный срок, должна заканчиваться в какой-то момент, если, конечно, вы не ожидаете, что ваша программа будет работать вечно.
Если пока не установлены какие-либо критерии для завершения, необходимо будет создать какой-либо другой механизм, чтобы прервать цикл, скрытый где-то внутри цикла, например return, break или (yuck - Basic - но это, вероятно, statement originins - оператор «Goto», прыгающий где-то вне цикла), чтобы завершить цикл.
Код, подобный этому, может быть трудно читать и отлаживать, и ранее это был признак того, что программисту было не очень важно писать чистый код. Тем не менее в настоящее время с приложениями, управляемыми событиями и структурированной обработкой ошибок (см. Try ... catch structure) есть чистые и легко читаемые способы выхода из любого цикла в любое время, поэтому, хотя (true) можно использовать без проблем.
Greetz
Алине
- 1. Это плохая практика?
- 2. Это плохая практика? C++
- 3. AJAX: Это плохая практика?
- 4. Это плохая практика, чтобы использовать ActionListener (это)
- 5. Почему это не правда?
- 6. Почему блокировка (это) {...} плохая?
- 7. Неужели это плохая практика, чтобы поймать Throwable?
- 8. Пропустить интерфейс к себе - это плохая практика?
- 9. Добавление нескольких вложенных фрагментов - это плохая практика?
- 10. Смешивание GET с POST - это плохая практика?
- 11. Java абстрактный метод: это плохая практика?
- 12. int foo (тип & bar); - это плохая практика?
- 13. Интерфейс C++ возвращает ссылку - это плохая практика?
- 14. Несколько примеров деятельности - это плохая практика?
- 15. NodeJS, это плохая практика для возвращения res.json
- 16. AngularJS: это плохая практика для аутентификации?
- 17. ли это плохая практика:. GetMyObject()() метод
- 18. Это плохая практика? Несколько объектов Graphics2D
- 19. PHP PDO Несколько запросов - это плохая практика?
- 20. Пока правда не работает
- 21. питон - Это плохая практика, чтобы сделать I/O в UniTest
- 22. Хорошая практика или плохая практика
- 23. Почему ненужные переменные экземпляра - плохая практика?
- 24. Javascript почему FOR IN - плохая практика?
- 25. Почему String Object Instantiation - плохая практика?
- 26. Пустые абстрактные классы - плохая практика, и почему?
- 27. string = string.trim(); плохая практика?
- 28. «Контейнерные» классы, хорошая или плохая практика, почему?
- 29. Почему «char» - плохая практика программирования в структурах?
- 30. Is module.export = [] Плохая практика?
'while (true)' не является по своей сути плохой практикой. Некоторые использования 'while (true)' являются плохой практикой, в основном занятой, ожидающей, когда другие виды ожиданий будут более уместными, но нет ничего плохого в 'while (true)' самом. – user2357112
Почему вы говорите, что это плохая идея? – user2357112
Пока вы знаете, что делаете, и у вас есть чистый способ выйти из него, это не плохая практика. – Morb