前言:spa
if,相信是童鞋們使用的最頻繁的關鍵字了,並且不少時候,咱們使用的if都是在無心識的狀態下隨手而爲。鍵入if,兩下回車(我使用了resharper,能夠自動編排if的格式),再信手寫下咱們須要的邏輯,一段能夠「正常運行」的代碼就被咱們實現了。儘管這段邏輯比較複雜,但在那個時間段,咱們對這段業務的先後流程已經有了很長時間的思考,因此能夠比較輕鬆的寫出來。但問題來了,一段時間以後,咱們發現這裏須要修正下,更或者是爲了提升魯棒性,須要爲某個變量考慮更多的狀況——即進一步添加更多的if。而後,看着那大段大段的if else,咱們蛋疼之餘,也會小小的欽佩,當時我是怎麼寫出這麼牛逼的代碼的?code
if自己沒有選擇的功能,爲了實現這點,有的人是這樣寫的:blog
if (orderinfo.State == 1)
{
result = "已預約";
}
else if (orderinfo.State == 2)
{
result = "已售出";
}string
else if 。。。io
或者class
result = orderInfo.State == 0 ? "待確認" : orderInfo.State == 1 ? "執行中" : orderInfo.State == 2 ? "已完成" : orderInfo.State == 3 ? "已解除" : "";
既瑣碎,可讀性也不高,並且效率還低(固然,這種狀況數據量通常不大)效率
若是用dictionary,變量
public Dictionary<int, string> OrderStatedDictionary = new Dictionary<int, string>() { {0, ""}, {1, "已預訂"}, {2, "已售出"}, {3, "待確認"}, };
調用的時候,用OrderStatedDictionary[]的方式,這樣無疑代碼會美觀不少。d3
兩段代碼比較總結
public string GetNowState(int p1, int p2 , int p3) { if (CheckMethod1(p1)) { if (CheckMethod2(p2)) { if (CheckMethod3(p3))) { return GetResult1(); } } } return ""; }
public string GetNowState(int p1, int p2, int p3) { if (!CheckMethod1(p1)) { return ""; } if (!CheckMethod2(p2)) { return ""; } if (CheckMethod3(p3)) ) { return GetResult1(); } return ""; } }
前者有三層的if嵌套,然後者的邏輯着徹底是一條線串下來,代碼量少無所謂,但一旦行數超過50行了,哪一種代碼更容易看不用多說。
哎~! 原本我總結了不少的,只是前段時間太忙,一直沒時間寫, 如今剛從上家公司辭職,還要過幾天才去新公司報道,纔有時間寫點東西,結果竟然一時想不起來了,只記得這兩點了,之後再補充。
也歡迎你們把本身的總結貼一下。