2014-10-21 4 views
0

Мне очень нравится механизм и стиль этого кода, но Im kinda не знает, подходит ли этот стиль кодирования или плохая практика.Is while (логический метод); плохая практика? (Пример)

public class Test 
{ 
    private static int counter; 
    private final static ArrayList<Object> _objects = new ArrayList<>(); 

    public static void main(String[] args) 
    { 
     //iterate till you find a valid object randomly 
     while (!doStuffIfValid(_objects.get(Rnd.get(_objects.size())))); 
    } 

    public static boolean doStuffIfValid(Object obj) 
    { 
     if (++counter > 30) 
      return true; //dont try more than 30 times 
     // if condition 
     // { 
     //  //do stuff then exit the caller loop 
     //  return true; 
     // } 
     return false; 
    } 
} 
+4

Вызов булевского метода в состоянии 'while' не является плохим; создание этого метода причина * побочные эффекты * обычно есть. –

+0

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

+0

В принципе, я знаю, что вызов метода в то время как нормальный в java, мой вопрос в том, что стиль этого класса является хорошей практикой, а не тем временем (методом), если вы заметили, что мой цикл while странный – user3789587

ответ

1

Ну

Ответ на этот вопрос лежит в пределах булева метода. Если этот метод раздувается и ресурс тяжелый; Тогда нет.

Кроме того, если вы случайно проверяете объекты, возможно, лучше подумать: устранить объекты, которые, как вы знаете, недопустимы из списка, а затем случайным образом выбирать из этого списка.

Таким образом, псевдо-рандомизатор не (случайно) выбирает недопустимые объекты для проверки над и снова; и времени/ресурсов.

Cheers.

0

Нет ничего плохого в использовании булевого метода в качестве условия для цикла while. Однако функциональность цикла заполнения в заголовке цикла, как правило, является плохой практикой. Это приводит к коду, который трудно понять, отлаживать (точки останова становятся неудобными) и поддерживать.

Смежные вопросы