最近,我们发现了一种通过使用Continue注释掉代码行的“好方法”:

for(int i=0; i<MAX_NUM; i++){
  ....
  .... //--> about 30 lines of code
  continue;
  ....//--> there is about 30 lines of code after continue
  ....
}

我通过问为什么以前的开发人员为什么将continue关键字放入密集循环中来抓挠我的头。最有可能的是,他/她觉得放置“continue”关键字比删除所有不需要的代码更容易...

通过查看以下情况,它引发了另一个问题:

方案A:
for(int i=0; i<MAX_NUM; i++){
  ....
  if(bFlag)
    continue;
  ....//--> there is about 100 lines of code after continue
  ....
}

方案B:
for(int i=0; i<MAX_NUM; i++){
  ....
  if(!bFlag){
  ....//--> there is about 100 lines of code after continue
  ....
  }
}

您认为哪个最好?为什么?
Break关键字怎么样?

最佳答案

在这种情况下,使用continue可以大大减少嵌套,并且通常使代码更具可读性。

例如:

for(...) {
    if( condition1 ) {
        Object* pointer = getObject();
        if( pointer != 0 ) {
            ObjectProperty* property = pointer->GetProperty();
            if( property != 0 ) {
        ///blahblahblah...
        }
     }
}

变得公正
for(...) {
    if( !condition1 ) {
        continue;
    }
    Object* pointer = getObject();
    if( pointer == 0 ) {
        continue;
    }
    ObjectProperty* property = pointer->GetProperty();
    if( property == 0 ) {
       continue;
    }

    ///blahblahblah...
}

您会看到-代码变得线性而不是嵌套。

您可能还会发现this closely related question的答案很有帮助。

关于c++ - 在C++中使用continue关键字的另一种方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3819572/

10-15 16:45