在很多情況下,有些函式內部有太多的if-else,不太直觀,也難以維護。舉個簡單的例子:
classprogram
public
static
void showerrormessage(string
input)
)";console.writeline(errormessage);
return
; }
else
if (input == "2"
) )";
console.writeline(errormessage);
return
; }
else
if (input == "3"
) )";
console.writeline(errormessage);
return
; }
else
if (input == "4"
) )";
console.writeline(errormessage);
return
; }
else
}}
在網路上有很多解決的方案,比如策略+工廠+ 配置等復合設計模式,或者反射,實現起來大都比較複雜,對於這麼乙個簡單的函式,有些殺雞用牛刀的感覺。下面介紹一種比較簡單的方法:
privatestatic dictionary> errormessages = new dictionary> },
},},
},};public
static
void showerrormessage(string
input)
console.writeline(
"unknow error!");
}
通過dictionary配置+func的方式,消除了過多的if-else結構,當需要增加一項邏輯判斷的時候,不需更改主函式showerrormessage,僅在dictionary中增加一項配置即可。
關於消除if else的簡單總結
if else是計算機語言中基本的分支語句,雖然很簡單,但可能會出現濫用的情況,如圖 這種標記判斷,巢狀成這樣 其實沒有必要巢狀 會讓別人覺得作者水平很低。可以看出,這些if僅僅是在判斷乙個變數,根據這個變數的值,返回不同的文字資訊。用switch也不是很好,那樣雖然理解起來容易一些,但仍然需要編寫...
C的內部函式和外部函式
函式本質上是全域性的,但可以限定函式能否被別的檔案所引用。當乙個源程式由多個原始檔組成時,語言根據函式能否被其它原始檔中的函式呼叫,將函式分為內部函式和外部函式。1 內部函式 如果在乙個原始檔中定義的函式,只能被本檔案中的函式呼叫,而不能被同一程式其它檔案中的函式呼叫,這種函式稱為內部函式。定義乙個...
C 函式內部定義函式原型?
在乙個函式內部這樣寫有意義嗎?首先說一下函式是不能巢狀定義的。其次這裡不是定義,只是個函式宣告。函式宣告的作用不用再問我了吧,c c 語法規定,定義在當前語句之後函式,是不能直接使用的,因為函式的查詢範圍是從第一句找到當行所在行,如果沒出現就會丟擲未解析符號的錯誤 你可以寫在全域性裡,也可以只寫在當...