Bjö*_*lex 0 c++ iteration loops
我有一系列内存要解析.如果我在结束前找到某个字节序列,我会中断迭代.我想知道我应该选择哪个循环:
while(i < end && !sequenceFound ) {
// parse
i++;
}
Run Code Online (Sandbox Code Playgroud)
要么
for( i; i < end && !sequenceFound; i++ ) {
// parse
}
Run Code Online (Sandbox Code Playgroud)
这用于从实现环形缓冲区的类派生的类的方法中.超类提供i和end.我的问题是,对于不熟悉代码的人,您认为哪一个更易于理解(表达意图更好)?
编辑我发现序列是进一步解析流所需的事实.我可以使用break和设置sequenceFound = true,但那将是多余的,或者我在这里严格要求?
为什么不在break;需要"中断"循环的时候使用它.这似乎是大多数惯用语言表达您的意图的语言功能.它通常意味着您可以不使用额外的布尔状态跟踪变量.
如果您需要知道迭代是否提前终止,您可以使用condidition i != end.无论哪种方式,使用最清晰的控制方法似乎最好,并且break;在您想要破解的点对我来说似乎最清楚,无论您是否保持"提前退出"变量.进行循环并测试一个你刚刚保证会失败的条件似乎是多余的.