推 ledia:感覺這樣更糟 @@ 02/04 11:17
→ ledia:要就一一對應, 不然之後 maintain 的人還要看過所有的計算 02/04 11:18
→ ledia:才知道要怎麼加新的 case 才不會有 side effect 02/04 11:18
→ adrianshum:同意樓上. 簡簡單單的 switch case, 每個 case 寫對應 02/04 11:35
→ adrianshum:的 subType = 什麼, 就簡單又易明白了 02/04 11:35
→ tomnelson:一對一對應也行呀!那是最一開始會寫的,但是最後程式不做 02/04 12:16
→ tomnelson:任何修改時,我才會寫上面回文的程式出來. 02/04 12:16
→ tomnelson:會使用subType = mainType - 3;是想表達出,當資料有規則 02/04 12:17
→ tomnelson:性出現時,可以考慮的作法,不是這樣做會比較好或不好. 02/04 12:18
→ tomnelson:其實這種問題真的"見仁見智". 02/04 12:19
推 VictorTom:case 7和9是ok, 但是case 11獨立出去會比較好吧@_@" 02/04 12:31
→ adrianshum:如果真的有規律當然好, 問題是最後那個 02/04 12:31
→ adrianshum:if (mainType == 11) subType++; 02/04 12:31
→ adrianshum:三個 case, 只兩個有 "規律"... 然後硬把三個 case 放 02/04 12:32
→ adrianshum:在一起, 這種 "規律" 真的看死人 02/04 12:33
→ adrianshum:還有其實真的叫 xxxType, 用個 enum 或 constant 大家 02/04 12:34
→ adrianshum:看起來總比一堆無意義數字容易理解得多 02/04 12:34
→ tomnelson:對,樓上你要說的剛好是我剛想到的,但是不宜在這篇討論下 02/04 12:50
→ tomnelson:去了,使用這種"magic number(s)"的程式本來就不好. 02/04 12:51
→ tomnelson:還有樓上你的回文點出了原po要說的重點,是那while loop 02/04 12:53
→ tomnelson:喔對了,回一下VictorTom大,要是我規劃的話,應該也不會讓 02/04 12:56
→ tomnelson:case 11出現,也就是說case 7/9/11都是mainType - 3,所以 02/04 12:57
→ tomnelson:這裡引出一個觀點...寫程式前的規劃與規格書很重要,不過 02/04 12:58
→ tomnelson:寫軟體的都知道,計劃永遠趕不上變化,變化比不上老闆一句 02/04 12:59
→ tomnelson:話,所以呢?以這種程式區塊而言,保持switch case裡的一對 02/04 13:00
→ tomnelson:一方式反而是最佳解 XD! 02/04 13:00
推 VictorTom:嗚嗚~~有時候不是所有事情都可以自己決定規格掌控的Q_Q~ 02/04 13:10
→ VictorTom:昨天幫同事看一個struct/union的問題, 我們用bit定義了 02/04 13:11
→ VictorTom:對應HW Reg的setting, 結果HW開了某個鳥Reg用3 bits卻跨 02/04 13:11
→ VictorTom:過兩個DWORD, 一個在尾2 bits, 接到下一個的頭1 bits, 02/04 13:12
→ VictorTom:導致算出來sizeof應該4個DW變成5個DW; 對那些bits對了半 02/04 13:12
→ VictorTom:天, 加掛debugger才找到問題, 這也是讓人想喊WTF啊>_<# 02/04 13:13
推 ledia:各人是覺得, 就算有規律, 語意上是 xxxType 的東西也不應用 02/04 14:15
→ ledia:運算的方法來求得, 一來如先前說不好管理, 二來整個程式的 02/04 14:16
→ ledia:邏輯會變得很不直覺 (各人->個人) 02/04 14:16
→ ledia:都已經用 switch 了, 不必要省到全都擠到同一個 case block 02/04 14:17
→ ledia:不然你就不要 switch, 不要 if, 也不要 while, 直接運算就好 02/04 14:17