Re: [問題] 新手發問 "!!"的意思

看板Programming作者 (Alien)時間12年前 (2012/03/12 23:41), 編輯推噓4(406)
留言10則, 7人參與, 最新討論串4/4 (看更多)
※ 引述《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)

03/13 11:25, , 1F
個人感覺!!比您提的好懂又簡潔
03/13 11:25, 1F

03/13 12:20, , 2F
這樣比較好… !!好懂個頭…
03/13 12:20, 2F

03/13 12:20, , 3F
是我重頭寫也會往這個方向寫
03/13 12:20, 3F

03/13 15:05, , 4F
其實是為了書籍排版空間, 所以寫短一點. XD
03/13 15:05, 4F

03/14 21:50, , 5F
嗯嗯 覺得這個作法比較好=.=a
03/14 21:50, 5F

03/15 01:04, , 6F
!!有種嚇到的感覺
03/15 01:04, 6F

03/21 17:43, , 7F
請問一下 |= 是什麼意思?
03/21 17:43, 7F

03/21 17:53, , 8F
喔喔看懂了 x=x|y -> x|=y
03/21 17:53, 8F

03/22 01:29, , 9F
我是覺得 !! 比較緊密些,沒啥不好,
03/22 01:29, 9F

03/22 01:30, , 10F
擔心人家會看不懂的話,可以為 !! 註解
03/22 01:30, 10F
文章代碼(AID): #1FNXaz8G (Programming)
文章代碼(AID): #1FNXaz8G (Programming)