看板 C_and_CPP 關於我們 聯絡資訊
我比較好奇的是x這個數字是那來的,但我想是沒有重複的數字。 該不會是某個head file定義了 enum {status1 ,status2 ,status3 ,status4}; enum Status { STATUS1 = 0x01<<status1, //1 STATUS2 = 0x01<<status2, //2 STATUS3 = 0x01<<status3, //4 STATUS4 = 0x01<<status4, //8 STATUS_A = STATUS2 | STATUS3, //6 STATUS_B = STATUS1 | STATUS4 //9 }; 如果是這樣,func(int x)可用func(Status stat) if ...... else if 則改成 switch(stat) { case STATUS1 : case STATUS2 : ......; case STATUS3 : ......; break; case STATUS_A: ......; break; case STATUS_B: ......; break; : } 這樣變化性及可讀性是不是比較高, 以上是我憑空亂想的 @_@ ※ 引述《shadown ()》之銘言: :  這是最近作夢夢到的..我工作上寫了一段 code ,主管看了之 :  後,要求要做更改,但我覺得更改後的可讀性與效能並不會比 :  較好,如果換做大家的話不知道會覺得怎樣寫比較好? :  [問題] : 使用者輸入一個數字,數字是沒有規則性的固定數字(共十個 :  數字,彼此無相依性,所以沒辦法簡化),要經過邏輯判斷後 :  ,呼叫一個固定的 func ,傳入相對應的數值(此數值有規則 :  性,由0x01->0x10),以取得結果。 : [我寫的程式碼] : void main(void) : { : ... : func(x); : ... : } : void func1(int x) : { : if(x==1) func2(0x01); : else if(x==6) func2(0x02); : else if(x==9) func2(0x03); : ...共10個 if 判斷 : } : [主管的要求] : void func1(int x) : { : switch(case) : { : case 1: : func2(0x01); : break; : case 6: : ... : } : } : 或是使用 array 存放數據,再跑迴圈做判斷。 :  我的想法是,用 switch 的方式並不見得比使用 if,else 來 :  得好,可讀性是差不多,但程式碼行數會多不少,要是整個 :  程式裡遇到不少類似的狀況,都用 switch 的方式的話,程式 :  碼就會變得"很大". : 而改用迴圈的方式,因為輸入數值只有十種,所以用迴圈的方 :  式,並無法簡化程式碼,行數也差不多。而且因為多了迴圈與 :  array 的使用,執行效能與記憶體空間使用上反而變差了(我 :  們寫的是系統程式,效能上必須要做考量),可讀性也降低了 :  些.. : 因為是工作,所以主管要求什麼我就只好照辦,但心裡還是有 :  些..,不知道換做是板友的話,會怎麼撰寫這段 code 呢? :  喔~對了~要是我的想法有錯的話,也請板友多多指教,感謝 :  ~^____^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.80.157.209 ※ 編輯: unfun 來自: 115.80.157.209 (05/15 14:34)
shadown:u大說對了,確實是某個 head file 裡的定義..^^|| 05/15 16:51