抓狂代码

抓狂代码
^^^^^^^^
- 作者:臭豆腐[trydofor.com]
- 日期:2008-12-14
- 授权:署名-非商业-保持一致 1.0 协议
- 声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。

0. 文档目录
^^^^^^^^^^
[[<=$INDEX]]

1. 可怜的虫子
^^^^^^^^^^^^^
现代人的生活,经常碰到糗事,或让人捧腹大笑或让人苦笑不得.
程序员闹糗事,一般都称之为BUG,有种"都是月亮惹的祸那种感觉".

曾经篡改老罗名句,笑称:彪悍的程序不需要测试.
实际上,你不测试程序,程序就会不断地测试你,轻则让你抓狂,重则让你失业,
甚至引发世界问题,比如千年虫(又是虫,呵呵)

2. 逻辑行划分
^^^^^^^^^^^^^
程序都是区分物理行和逻辑行的,不同的编程语言对逻辑行有不同的定义.
比如C-Like语言是分号(;),Basic是物理行,而javascript这样还是混编的.

在我刚学习java,用记事本写代码的时候,经常忘记在行尾加分号导致编译错误.
后来养成加分号的好习惯,但也碰到了一次麻烦,代码大概如下.

=================== java : 不该有的分号 ===================
public String trimToNull(String str)
{
String rst = null;
if(str != null)
{
rst = str.trim();
if(rst.length()==0);
{
rst = null;
}
}
return rst;
}
===========================================================

trimToNull的可怕之处是运行时永远返回null,但编译阶段却是正常的.

3. 与或混淆
^^^^^^^^^^^
自然语言不可能像程序那么严谨,尤其是我们的母语.
因此我对不久前炒作的汉语编程非常费解,自认为除了炒作外没有任何意义.

汉语中时候不太严格区分and和or,请看下面的汉语描述:
有整数变量x,y;如果x不等于1 或/和 x不等于2时,则y=2x;否则y=3x;

咋看起来好像没啥问题,用'或'与'和'好像不影响我们的理解,
那么翻译成代码吧.

=================== java : 与或混淆 ===================
public int testOr(int x){
int y = 3*x;
if(x != 1 || x != 2){
y = 2*x;
}
return y;
}

public int testAnd(int x){
int y = 3*x;
if(x != 1 && x != 2){
y = 2*x;
}
return y;
}
===========================================================

testOr是错的,结果永远是y=2x;
这个错误,我犯过2次了.哎,真是该销自己两下,以示警戒.

还有个错误是来自于老婆的同事,最后被老婆发现(老婆是个比我严谨的人).
有大概以下这样的SQL

=================== sql : 与或混淆 ===================
//这个是错误的,没搞清and和or的优先级
SELECT
COUNT(1)
FROM
TEST
WHERE
SEQ=1
AND DIS=2
OR HIT=3

//下面是原始要求的本来面貌
SELECT
COUNT(1)
FROM
TEST
WHERE
SEQ=1
AND (DIS=2 OR HIT=3)
===========================================================

4. CV精通
^^^^^^^^^
有个笑话说,
一个程序员去面试,说自己精通CV,然后面试官问什么是CV?
答曰:CTRL+C CTRL+V .

基本上大家都是精通CV的人.
有CV @author, "嫁祸于人"的;有CV代码,偷工减料的.
有CV google,进行测试和学习的,等等吧.

CV的案例太多了,简直五花八门,呵呵.
总之,CV无罪,但务必要留意上下文和适用场合.

=========================

a9text排版地址 [url]http://www.trydofor.com/a9w3-auhome/trydofor/article/2008/1214074100/body.htm[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值