让人抓狂的代码

1.确保这个值等于ture

if (someBoolean == true) {
    doSomething();
}

2.只有等于ture时我才return ture

if (result == true)
    return true;
else
    return result;

3.我就是不信任if

if (result <= 10) {
    handling();
}
else if (result > 10) {
    otherHandling();
}
else {
    handling(); // to be sure
}


4.要写出一看就懂的代码

function DocumentDotWrite(s){
    document.write(s);
}
分享这篇文章:

26 Responses to 让人抓狂的代码

  1. Null says:

    第2种我上个月领略过.

    我见过最匪夷所思的代码是:
    if (total10)
    {
    //do something.
    }

  2. ammo says:

    即使是新手也不会写出这样的代码吧

  3. belialofking says:

    前两种的话,在脚本语言里是不是常用呀?当然,我看到的一般都是== false.
    第二种,在脚本语言里如果结果正确返回true,如果不正确返回错误信息是不是可以这样写呀?

  4. steven says:

    弱弱的问一下,第一种和第二种代码分别有什么问题?
    为什么这么写不好呢?

    • noone says:

      第一种: 这段可以省略” == true”
      第二种: return result

      代码要简洁, 不是说正确就可以, 你多写了这么多行, 读代码的人要浪费多少脑细胞啊? 要不就是为了代码行数滥竽充数.

      • ff says:

        第一种跟第二种要看情况
        如果someBoolean不是bool型(当然,我知道这里看名字应该是bool型)而且object型,那么为了绝对的安全,真就要这么写了。

        比如,一个参数value是一个object型,并且,他有可能是任何类型,但我只希望他是bool型,并为true时执行一些东西,那么,就真要这样做:

        if(value == true){
        }

    • 何磊 says:

      第一种是错误的做法,一般程序中认为不为0的所有值都是true;但是true只有一个值,可能为1,也可能为其他的;if(2==true)这会怎样?
      第二种也存在这个问题,另外直接return result;就好啦

  5. Bruce says:

    someBoolean = someBoolean == true ? false : true;

  6. poly says:

    1.确保这个值等于ture

    2.只有等于ture时我才return ture

    ture? true!
    typo?

  7. NULL says:

    好吧,我承认,我也这么写过,,,,,以后再也不了。。。。

  8. peach5460 says:

    第一种我常用,我没觉得有什么不好
    第二种倒是很奇葩

  9. youngto says:

    1、
    if(someBoolean)
    doSomething();
    2、
    return result;
    3、
    if(result <= 10)
    handling();
    else
    otherHandling();
    4、
    document.write(s);

  10. statm says:

    最后那段 js 的目的是防止 document.write 被广告拦截器干掉。

  11. zq says:

    能写出这样代码的估计是超级新人。这种其实不怎么抓狂,基本一眼就能发现问题,而且是小问题,少点代码洁癖就不会觉得问题有多严重。真在抓狂的是滥用设计模式,一坨坨的垃圾,看不明,也没注释说明为什么这么做,想修改又一堆陷阱。

    • hotdigger says:

      严重同意,曾经改过前同事写一项很简单的业务功能,明明可以很简单的实现,非要搞一堆复杂的方法,那种很符合设计模式的方法,导致改到我吐血.

  12. Ever says:

    呵呵,刚写代码的时候,没少写第一种

  13. thelONE says:

    第一个没问题, 为什么”让人抓狂“? “someBoolean==true”非常明确的指明了这个值是一个bool值而不是指针, 难道是不好的编程习惯么?

  14. carlchen says:

    我也觉得第一段代码没什么 反而如果跨平台时是非常安全的

  15. heliclei says:

    第一个写法的好处是,可以方便的改为
    if (someBoolean == false) {
    doSomething();
    }

  16. Mao says:

    不要五十步笑百步。
    我想一个正常的程序员是不会写出这种代码的,写这种代码都是头脑不清醒的时候。
    你想要是你加班通宵半夜写代码,你能保证不写这样的代码?

  17. 山村老师 says:

    我想关于第一点的另一种解读:
    if (someBoolean == true) {
    doSomething();
    }
    写成这样,也许是基于多线程的状态,bool 变量有可能被修改变为大于1的数值

  18. 哈哈哈 says:

    不要忘了这是在写JS
    第一种写法没问题。因为变量是可以随时被赋予其他类型的。
    而且代码是随时会改的,要经手很多人,有时候修改者要确保安全又没充足的时间吃透代码, 就会出现以上的情况。

  19. Roy says:

    if( boolean ){
    }else{
    do();
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.