论坛首页 入门技术论坛

抓狂代码

浏览 1656 次
锁定老帖子 主题:抓狂代码
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-14   最后修改:2008-12-14
抓狂代码
^^^^^^^^
- 作者:臭豆腐[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排版地址 http://www.trydofor.com/a9w3-auhome/trydofor/article/2008/1214074100/body.htm
   发表时间:2009-12-08  
说的不错~
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics