我有这个代码。首先,jobDone为false,程序执行第一步,然后是第二步,并将jobDone变量设置为true,表明所有任务都已成功完成。
但是我可能会选择再次运行这段代码而我不想再做第一步,因为它可能没有必要。因此,如果作业已经完成至少一次,并且如果checkSomething()得出结论一切正常,那么它应该继续并仅执行secondStep();
否则,如果checkSomething()发现出错了,那么我必须重复第一步以及第二步(就像在初始情况下一样)。
jobDone = false;
if (jobDone) {
if (checkSomething()) {
doSecondStep();
} else {
doFirstStep();
doSecondStep();
}
} else {
doFirstStep();
doSecondStep();
jobDone = true;
}
但我觉得我在重复自己。有没有更好的写作方式?谢谢你。
答案 0 :(得分:1)
if(jobDone && checkSomething()) {
doSecondStep();
} else {
doFirstStep();
doSecondStep();
jobDone = true;
}
答案 1 :(得分:0)
第二步总是执行,我建议你先把它移到最后:
jobDone = false;
if (jobDone) {
if (!checkSomething()) {
doFirstStep();
}
} else {
doFirstStep();
jobDone = true;
}
doSecondStep();
然而,只有一个条件会导致doFirstStep()不被执行,而当jobDone == true和checkSomething == false时,我们只能检查它。
整个事情可归纳为三行:
if (!(jobDone && !checkSomething())) { doFirstStep(); }
jobDone = !jobDone;
doSecondStep();