作者adrianshum (Alien)
看板Programming
標題Re: [問題] 新手發問 "!!"的意思
時間Mon Mar 12 23:41:46 2012
※ 引述《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