在审核时,有时会遇到这种循环:
i = begin
while ( i != end ) {
// ... do stuff
if ( i == end-1 (the one-but-last element) ) {
... do other stuff
}
increment i
}
接下来我要问一个问题:你会写这个吗?
i = begin
mid = ( end - begin ) / 2 // (the middle element)
while ( i != end ) {
// ... do stuff
if ( i > mid ) {
... do other stuff
}
increment i
}
在我看来,这违背了编写循环的意图:你循环是因为每个元素都有共同的操作。使用这种结构,对于某些元素,你会做一些不同的事情。因此,我的结论是,你需要为这些元素单独编写一个循环:
i = begin
mid = ( end - begin ) / 2 //(the middle element)
while ( i != mid ) {
// ... do stuff
increment i
}
while ( i != end ) {
// ... do stuff
// ... do other stuff
increment i
}
现在我甚至在SO上看到了一个关于如何以好的方式编写
if
子句的question... 我感到很难过:这里有些事情不对劲。我错了吗?如果是,那么在编码时提前意识到的特殊情况为什么要使循环体充满混乱呢?