我遇到過這樣一種情況:我有一堆需要按順序初始化的「系統」,如果所有的前進系統都成功初始化,下一個系統只會被初始化。切換語句而不是多重嵌套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