Вопрос по java, for-loop, syntax – Приложение с бесконечным циклом - для (;;)

1

Я пытаюсь понять концепцию для цикла пример

for (;;)
{
//write code
}

Я понимаю, что он делает и как это та же самая структура циклов, что и while (true), но мой вопрос ... это хорошая практика программирования и для каких приложений будет применяться этот тип структуры циклов?

Ваш Ответ

5   ответов
0

беспокоиться не о чем. Речь идет о предпочтениях программиста.

я предпочитаюwhile(true)С моей точки зрения это более элегантная форма бесконечного цикла. Кто-то может предпочестьfor(;;) подход.

0

Хотя это больше похоже на событие / условие. Где вы запускаете цикл, пока не произойдет что-то, что завершит цикл. С другой стороны, цикл for больше похож на счетчик, где вы хотите указать, сколько раз должен был выполняться цикл. По крайней мере, у этого есть явное условие для этого.

Конечно, технически оба они одинаковы, они оба проверяют состояние запуска, чтобы запустить цикл цикла.

3

Есть несколько ситуаций, когда это желаемое поведение. Например, игры на игровых приставках на основе картриджей обычно не имеют условия выхода в своем основном цикле, так как нет программы для выхода из программы; Цикл работает до отключения питания консоли.

Другой пример - когда модуль слушает действия другого. Он должен будет слушать все время, поэтому слушателю приходится слушать бесконечное время или пока программа не выключится. Как Сокеты, Потоки и UIComponents.

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

Чтобы сделать бесконечный цикл хорошей практикой:

  1. Make sure that it is a desired behavior. If it has stop condition, avoid infinite loop!
  2. Make it explicity with for(;;) or while(true). Avoid tautologies in expression, do it simple!
  3. Make it fault tolerant, rescuing expected exceptions and give to them the right treatment!
  4. And the most important! Make a simple infinite loop!
0

Это просто вопрос личных предпочтений. Например, я предпочитаю этот стиль:

 while (true) {
     // Do infinite task
 }

Все сводится к удобочитаемости, выбирайте то, что вам легко читать и понимать несколько месяцев спустя.

Я очень надеюсь, что вы имеете в видуwhile(true)это ведь Java.
Ха-ха, я написал кое-что сегодня, спасибо @ waldyr.ar за редактирование.
@MichaelDillon Добро пожаловать :)
1
while(abortRequested)
{
  // ....
}

while(true)
{
   // ...

   // ... dozens of lines of code ...

   if(abortRequested)
     break;

   // prepare next iteration
}

В качестве альтернативы это также может выполняться в потоке демона, который автоматически завершается, когда все потоки, не являющиеся демонами, завершаются. Таким образом, семантика этих конструкций обычно такова:

По умолчанию должен продолжаться вечно, если не получено явное событие завершения.

Не лучшая практикаbreak бесконечный цикл, этот беспорядок с потоком.do-while петля действительно лучше.

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