我遇到过这样一种情况:我有一堆需要按顺序初始化的“系统”,如果所有的前进系统都成功初始化,下一个系统只会被初始化。切换语句而不是多重嵌套if - else?
这使我得到了一整套嵌套的if - else语句。这里有一些可视化的伪代码。
bool mainInit() {
if (!system1Init()) {
reportError(); // some error reporting function
}
else {
if (!system2Init()) {
reportError();
}
else {
if (!system3Init()) {
// ... and so on
我发现当你得到几个关卡时,这看起来就像一团糟。
现在我想用一个switch语句来代替,开始在第一种情况下,通过下降到成功的其他情况下,只要有一个错误打破。
bool mainInit() {
switch (1) {
case 1:
if (!system1Init()) {
reportError();
break;
}
case 2:
if (!system2Init())
reportError();
break;
}
// ....
}
现在,我更喜欢这个了。我发现读起来容易多了,特别是有一些体面的评论,但我对编程相当陌生。
所以,我的问题是:怎么看这不是开关语句是如何传统上使用(至少从我所看到),是这样的可以接受的,或将本被认为是不好的形式?
作为新的节目,我想不发展太多的坏习惯,可能阻挠,并为其他程序员在路上事情变得更加困难。
我做了搜索,但大部分我发现曾与替换如果链来完成 - else if语句,而不是取代嵌套的。依次
后,所有的if语句中会发生什么? 'mainInit'返回什么? – Beta 2014-09-27 21:14:31
如何在失败时返回“假”或“抛出......”? – 2014-09-27 21:16:48
你不必做'else {if(){'大多数人做'else if(){'。 – Galik 2014-09-27 21:39:22