如何摆脱这个功能?

时间:2017-10-17 19:54:19

标签: c

我有void函数<option value="0">Approved</option> <option value="[1, 3, 5, 7]">Pending Payroll</option> <option value="[2, 4, 6, 8]">Denied</option> ,它应检查数组中存在的数字,这些数字在regVaror中作为void isVaraRegistered引入。如果引入的数字已经存在,它应该从regVaror函数中断开。我不知道该怎么做。如何将isVaraRegistered设置为true或false或实际上是任何组合。请帮忙!

varanummer

1 个答案:

答案 0 :(得分:0)

直接返回会做到这一点,但我倾向于在特殊情况下倾向于更加可控的退出并让功能运行。很明显,有些情况下可以获得多次回报,但我会在开始时尝试将其保留给后卫,也许在完成之前可能会有一些特殊情况。但我不会在循环内返回。只是让我感到肮脏:)

所以在你的情况下,我实际上会打破,因为你已经做了,无论如何都将返回...你的代码很好。但我倾向于采用这种方法:

void isVaraRegistered(Vara reg[], int varunummer){
    int found = 0;
    for(int n=0; found == 0 && n<MAX; n++){
        if(reg[n].varunummer==varunummer) {
            printf("\nError! Varunummer finns redan!\n\n");//existing error msg
            found++;
        }
    }   
}

请注意,这只是个人编码风格的事情。几年前转移到C#,我们推动我们公司标准化和编写某种方式,并且这种控制执行让整个功能运行是首选。

---编辑: 我正在回复原始代码,自从我开始回复以来你已经更新了。

顺便说一下,应该将int设置为返回类型并返回1或0,指示是或否给定函数的名称并返回我引入的found变量。那么函数被调用的地方相应地响应....并取出printf,因为函数本身有一个责任就是回答'isVaraRegistered?'这个问题。任何用户I / O都应在此功能之外完成。