作者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)
1F:→ cockskin:个人感觉!!比您提的好懂又简洁111.235.211.117 03/13 11:25
2F:→ MOONRAKER:这样比较好… !!好懂个头… 118.163.12.174 03/13 12:20
3F:→ MOONRAKER:是我重头写也会往这个方向写 118.163.12.174 03/13 12:20
4F:→ TsaiCF:其实是为了书籍排版空间, 所以写短一点. XD 220.132.5.13 03/13 15:05
5F:推 carlcarl:嗯嗯 觉得这个作法比较好=.=a 59.127.141.84 03/14 21:50
6F:推 hirabbitt:!!有种吓到的感觉140.119.125.172 03/15 01:04
7F:推 adame:请问一下 |= 是什麽意思? 210.68.141.44 03/21 17:43
8F:推 adame:喔喔看懂了 x=x|y -> x|=y 210.68.141.44 03/21 17:53
9F:→ ykjiang:我是觉得 !! 比较紧密些,没啥不好, 203.70.98.168 03/22 01:29
10F:→ ykjiang:担心人家会看不懂的话,可以为 !! 注解 203.70.98.168 03/22 01:30