看板 Programming 關於我們 聯絡資訊
※ 引述《yauhh (喲)》之銘言: [43] : 那樣子叫做好維護嗎? 相較來看,像本文這種 : !!T1 + 2 * !! T2 + 4 * !! Carry ===> int : 程式短小,值域明確,只差語法上面比較不好讀的這種情況,表面上看起來不好維護, : 實際上如果這一段程式有算錯,要修改時,UnitTest自動測試程式做下去,各種測試資料 : 刷個幾次,如果正確通過就完成,維護的時間可能短少很多. : 本人是很懼怕那種看到程式稍微難讀就該該叫的合作者,遇到那種人,程式難維護或 : 容易維護都沒關係,最麻煩的就是程式寫複雜一點點就吵不完. 溝通上問題比較麻煩. : (說穿了數學差就承認嘛,嫌程式複雜是哪一招...) : 抱歉一點點題外的牢騷. 不是覺得這種精簡寫法一定有錯,但同樣做法,真的要寫得那麼 非直覺嗎?為什麼不可以寫成: int t = 0; if (T1) t |= 1; if (T2) t |= 2; // 或寫成 t |= (1<<1); if (Carry) t |= 4; // t |= (1 << 2) switch (t) { //.. } 再不然,寫成 int t = (T1? 1 : 0) | (T2 ? 2 : 0) | (Carry ? 4 : 0); (以上 bitwise OR 可改用 +,看你自己喜好) 這樣單從 code 表面上就看得出是根據 T1, T2, Carry 來 turn-on 各個 bit。除非真的程式慢得連這一點點 performance 都要壓搾, 不然至少對我來說,上面的寫法比 !!T1 + 2 * !! T2 + 4 * !! Carry 看起來合理得多了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.19.47.36 ※ 編輯: adrianshum 來自: 223.19.47.36 (03/12 23:43)
cockskin:個人感覺!!比您提的好懂又簡潔111.235.211.117 03/13 11:25
MOONRAKER:這樣比較好… !!好懂個頭… 118.163.12.174 03/13 12:20
MOONRAKER:是我重頭寫也會往這個方向寫 118.163.12.174 03/13 12:20
TsaiCF:其實是為了書籍排版空間, 所以寫短一點. XD 220.132.5.13 03/13 15:05
carlcarl:嗯嗯 覺得這個作法比較好=.=a 59.127.141.84 03/14 21:50
hirabbitt:!!有種嚇到的感覺140.119.125.172 03/15 01:04
adame:請問一下 |= 是什麼意思? 210.68.141.44 03/21 17:43
adame:喔喔看懂了 x=x|y -> x|=y 210.68.141.44 03/21 17:53
ykjiang:我是覺得 !! 比較緊密些,沒啥不好, 203.70.98.168 03/22 01:29
ykjiang:擔心人家會看不懂的話,可以為 !! 註解 203.70.98.168 03/22 01:30