Java 是while(布尔方法);坏习惯?(示例)
我真的很喜欢这段代码的机制和风格,但是我不知道这段代码风格是合适的还是不好的Java 是while(布尔方法);坏习惯?(示例),java,Java,我真的很喜欢这段代码的机制和风格,但是我不知道这段代码风格是合适的还是不好的 public class Test { private static int counter; private final static ArrayList<Object> _objects = new ArrayList<>(); public static void main(String[] args) { //iterate till
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;
}
}
公共类测试
{
专用静态整数计数器;
私有最终静态ArrayList_objects=新ArrayList();
公共静态void main(字符串[]args)
{
//迭代直到随机找到一个有效对象
而(!dostuffivalid(_objects.get(Rnd.get(_objects.size()))));
}
公共静态布尔值dostuffivalid(对象obj)
{
如果(++计数器>30)
return true;//重试次数不要超过30次
//如果条件
// {
////执行stuff,然后退出调用方循环
//返回true;
// }
返回false;
}
}
嗯
答案在于布尔方法。如果该方法过于臃肿且资源繁重;那就不行了
另外,如果您正在随机检查对象,那么最好改为:从列表中删除您知道无效的对象,然后从该列表中随机选择
这样,伪随机化器就不会(偶然地)一次又一次地选择要验证的无效对象;浪费时间/资源
干杯 使用布尔方法作为while循环的条件没有什么错。然而,在循环头中填充循环功能通常是一种不好的做法。这会导致代码难以理解、调试(断点变得不方便)和维护。在
中调用布尔方法,而条件不错;使该方法产生副作用通常是非常困难的。您只需确保在某个点使布尔值为false,否则它将是一个无限循环。基本上,我知道在while中调用方法在java中是正常的,我的问题是,该类的样式是否是一个好的实践,而不是while(方法)本身,如果你注意到我的while循环strange@CodeWhisperer从技术上讲,你不必让这个陈述是假的<代码>while(true){break;}System.out.println(“Foo”)代码>将打印Foo。整洁吗?不太可能,因为第三方在不阅读代码的情况下不知道是什么导致了中断,但从技术上讲它是有效的。