栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“ while(true)”循环是如此糟糕吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“ while(true)”循环是如此糟糕吗?

我不会说这很糟糕 -但同样地,我通常至少会寻找替代方案。

在我写第一件事的情况下,我几乎总是至少尝试将其重构为更清晰的内容。有时它是

bool
无能为力的(或者替代方法是拥有一个变量,该变量除了指示循环的结束之外,没有其他意义,而不是一条break语句),但这至少值得一试。

作为使用

break
标志比使用标志更清晰的示例,请考虑:

while (true){    doStuffNeededAtStartOfLoop();    int input = getSomeInput();    if (testCondition(input))    {        break;    }    actonInput(input);}

现在,让我们强制它使用标志:

boolean running = true;while (running){    doStuffNeededAtStartOfLoop();    int input = getSomeInput();    if (testCondition(input))    {        running = false;    }    else    {        actonInput(input);    }}

我认为后者阅读起来更复杂:它有一个额外的

else
块,
actOnInput
它更加缩进,并且,如果你想弄清楚
testCondition
返回时会发生什么
true
,则需要仔细查看块的其余部分以检查是否存在是不是经过了else可能会出现的块是否
running
已经被设置为
false
与否。

break
语句可以更清楚地传达意图,并让块的其余部分继续进行所需的操作,而不必担心较早的条件。

请注意,这与人们在一个方法中拥有多个return语句的说法完全一样。例如,如果我可以在前几行中得出方法的结果(例如,因为某些输入为空,为空或为零),那么发现直接返回该答案要比使用变量存储结果更清楚,然后是一整段其他代码,最后是一条

return
语句。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号