我真的很喜欢这段代码的机制和风格,但我有点不知道这种编码风格是适当的还是不好的做法。
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;
}
}
答案 0 :(得分:1)
好吧,
答案就在于布尔方法。如果那种方法膨胀,资源沉重;然后没有。
此外,如果您是在随机检查对象,最好是:从列表中消除您知道无效的对象,然后从该列表中随机选择。
这样,伪随机函数不会(偶然)选择无效对象进行验证,反复进行验证;和浪费时间/资源。
干杯。
答案 1 :(得分:0)
使用布尔方法作为while循环的条件没有任何问题。但是,循环头中的填充循环功能通常是一种不好的做法。它导致代码难以理解,调试(断点变得不方便)和维护。