`
trydofor
  • 浏览: 146095 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

抓狂代码

阅读更多
抓狂代码
^^^^^^^^
- 作者:臭豆腐[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
分享到:
评论
1 楼 mylazygirl 2009-12-08  
说的不错~

相关推荐

    微信公众号验证token代码

    微信公众号验证token经常失败,是一件很让人抓狂的事。找了很久,终于找相关一个可用的相关代码,希望对你有用。

    linux下gcc自编全屏幕编辑器源代码

    linux操作系统下,vi编辑器使用起来实在令人抓狂,适应了一个月,还是有抵触心理。正好这段时间在学c语言,于是用vi和gcc自编完整全屏幕编辑器,命名为ed;上传全部1.0版完整源代码,毫无保留,有兴趣可继续完善开发...

    world wind 源代码

    NASA World Wind是一款虚拟地球仪软件,像Google Earth一样,可以用它来查看地球的卫星照片。  NASA World Wind俗称地球放大镜,是NASA(美国)...熟悉的人为之疯狂,不熟悉的人为之抓狂。一切只因它太过于贴近专业!

    完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题

    本篇文章是对解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题进行了详细的分析介绍,需要的朋友参考下

    Dreamweaver代码的格式化功能掌控html代码的格式

    这样的代码是不是很让人抓狂呢? 格式化后的代码,使用适当的缩进和换行,可读性就好多了! 那如何使用Dreamweaver格式化代码呢? 第一步:依次点击菜单栏的 编辑 – 首选参数 – 代码格式 (注:Dreamweaver...

    编写可测试的Javascript代码

    4.金字塔厄运–深层的嵌套在Javascript开发中非常多见,但是他们是让人各种担忧的抓狂的东西。深层嵌套在内部的代码逻辑是很难进行单独测试的,并且随着时间的推移,会有变得像意大利面条式的难以维护的倾向。5.拙劣...

    如何写出无法维护的代码?

    酷壳里有很多我觉得很不错的文章,但是访问量大的却是那篇《6个变态的Hello World》,和它能在本站左边栏“全站热门”中出现的还有“如何加密源代码”,以及编程真难啊等这样的文章。可见本站的读者们的偏好,我也...

    面向对象Javascript核心支持代码分享

    在几千行代码里跟踪、跳转真让人抓狂! Javascript做面向对象开发的时候,总是会用到很多模拟面向对象特性的方法,这些方法就构成了支撑面向对象Javascript的核心代码,以下就是部分代码,其中参考

    JavaScript中令你抓狂的魔术变量

    在存在这么一个变量 tt, 它满足下面的代码. 代码执行完毕后 ,errCount=0 而且 断言函数也从未 alert 信息 代码如下: 代码如下:[removed] var tt=/* 请在这里定义tt */; var errCount=0 //全局变量,...

    VisualFreeBasic.chm

    你还在为C语言繁琐的代码而抓狂吗?你还在为C语言复杂的流程而纠结吗?那么来VisualFreeBasic 的温馨家庭来瞧瞧吧,一个自由、免费、包容的编程家庭,说不定就能重新定义你对编程的认知,改变你的未来编程方向。 ...

    SQL格式化工具2.8.7汉化+破解

    如果碰上一团糟的代码(估计概率不小),那更是让你抓狂。 经常分发自己编写的SQL代码给别人,不管是通过博客、论坛、Email、还是其他方式,不规范的代码会让你看上去很不专业。 需要格式化、规范大量的SQL文件,...

    详解关闭令人抓狂的ESlint 语法检测配置方法

    主要介绍了详解关闭令人抓狂的ESlint 语法检测配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    寒羽枫日历控件修正版

    寒羽枫的日历控件相信大家都很熟悉,这是一款简易的,通用的,实用的日历控件,最近一个项目有要用到它,但是这里发现一个bug,就是日期的初始值,竟然是2009年11月份,这真是让人抓狂,后来花费了三个小时的时间,...

    无穷积分matlab代码-Matlab:Matlab与数学算法代码集合

    没有你的极限,柯西抓狂。 我的心已成自变量, 函数因你波起波荡。 低阶的有限阶的, 一致的不一致的, 是我想你的皮亚诺余项。 狄利克雷,勒贝格、杨 , 一同仰望莱布尼茨的肖像, 拉贝、泰勒,

    编程语言中一些令人抓狂的规则

    众所周知,软件开发者每天都要做各种各样的决定:如何最好的实现功能、如何修复bug、如何提升应用程序的性能等等。但是他们同样是在别人的劳动成果下面继续做自己的决定的,...除此之外,对于每天都要写代码的软件开发

    vue实现在一个方法执行完后执行另一个方法的示例

    // 你的逻辑代码 return Promise.resolve(/* 这里是需要返回的数据*/) } function3(){ // 你的逻辑代码 return Promise.resolve(/* 这里是需要返回的数据*/) } // 调用 function1(){ this.function2().then(val...

Global site tag (gtag.js) - Google Analytics