本帖最后由 bkq421511585 于 2012-11-02 13:07:00 编辑

解决方案 »

  1.   

    if (someBoolean === true) {
        doSomething();
    }在javascript倒是必要的
      

  2.   

    我觉得也挺好呀,哪些是重点要考虑的参数.
    一看就明白。好好学一下汇编语言。搞清楚release与debug版的区别。
    这种低端的优化。编译器都能帮你搞定。你还是专注于业务逻辑
    几个jump指令而已,保证release出来的代码,你反编译之后都搞不清楚条件情况了有时命名不太规范
    多个条件进行比较的时候,这样写还是可取的var age17 = c == 17;特别这种条件一序列下来的时候,你中间突兀一个 age17,我相信你也会采用这种写法
    因为人的思维摆在这里。
    if(a== 14&& b == 15 && age17 == true && d == false)
    {}
    当然这种写法是不错,至少你命名要规范,有意义
    if(CanA && IsB && IsC && !CanD)
    {
     do..
    }
    如果命名不规范,如这样的代码
    你也要去查找变量定义吧
    if(why??false && ! what??true && where)你说哪个好读,哪个好懂,有没有必要加上去呢当然我也喜欢看这样的代码
    dataGrid1.Visible = source.Count > 0;
    有时加上一段中间变量未必就是不优化
    如这样的代码  var t = (IDictionary<string, object>)total;
      var cur =(int)t[key];
      r = ((double)cur/(double)totalpersonal).ToString("P");而这样写就是错的r =((double)((IDictionary<string, object>)total[key])/(double)totalpersonal).ToString("P");特别是t[key]为int时,计算时强制转为double,当其中容器中取出时还得是int型
      

  3.   

    脑残代码总比假高手的代码好,毕竟我们看得懂前者,请看假高手的代码:
    return a > 9 ? b > 7 ? "A" : b < 0 ? "B" : "C" : c == 5 ? "E" : "F";
      

  4.   

    if (result <= 10) {
        handling();
    }
    else if (result > 10) {
        otherHandling();
    }
    else {
        handling(); // to be sure
    }你这个代码写的不是脑残吗?
    一个<=10 了 ,其他的只有  >10
    你直接这么写if(result <=10)
    {}
    else
    {}就完事了 
      

  5.   

    if (result <= 10) {
        handling();
    }
    else if (result > 10) {
        otherHandling();
    }
    else {
        handling(); // to be sure
    }
    这个有点过了哈。就两种可能的撒。
      

  6.   

    如果写成switch结构会很好理解的,只是高手都这么写,实在是让人难以理解,当个考试题还差不多,实际中还是得尽量少写这种代码。
      

  7.   

    if (result <= 10) {     handling(); } else if (result > 10) {     otherHandling(); } else {     handling(); // to be sure } 
    估计原先是 》 = 《 三种情况
      

  8.   

    if (someBoolean == true) {     doSomething(); } 
    如果someBoolean声明为bool则没必要
    否则个人认为没什么问题
      

  9.   

    1.
    if (someBoolean == true) {
        doSomething();
    }
    假设,someBoolean 未指定类型,这个判断比较有必要,==true 并不是什么坏事, 反而我觉得==true 看着比较爽.2.
    if (result == true)
        return true;
    else
        return result;同1,当然不推荐object 做返回3.
    if (result <= 10) {
        handling();
    }
    else if (result > 10) {
        otherHandling();
    }
    else {
        handling(); // to be sure
    }
    这个比较好玩,如果result为可空类型,也是符合逻辑的.4.
    function DocumentDotWrite(s){
        document.write(s);
    }
    这个没有什么错误的..编程习惯并没什么教条主义.主要你想,怎么写都可以.
      

  10.   


    呵呵,被照片吸引过来了。hoho
    本人也不喜欢重复啰嗦的代码,但是呢有些时候又必须考虑到多方面又方便的调用。
      

  11.   

    来个更脑残的代码
      if (result1 == true && result2 == true)
                    return true;
                else if (result1 == true && result2 == false)
                    return false;
                else if (result1 == false && result2 == true)
                    return false;
                else if (result1 == false && result2 == false)
                    return false;
                else return false;
      

  12.   

    经常这样写...1.第一个没有什么影响,对于可读性和执行效率都没有影响。bool test = false;
    if (test == false)
     { }
    .method private hidebysig static void  Main(string[] args) cil managed
    {
      .entrypoint
      // コード サイズ       11 (0xb)
      .maxstack  1
      .locals init ([0] bool test,
               [1] bool CS$4$0000)
      IL_0000:  nop
      IL_0001:  ldc.i4.0
      IL_0002:  stloc.0
      IL_0003:  ldloc.0
      IL_0004:  stloc.1
      IL_0005:  ldloc.1
      IL_0006:  brtrue.s   IL_000a
      IL_0008:  nop
      IL_0009:  nop
      IL_000a:  ret
    } // end of method Program::Main bool test2 = false;
     if (test2)
      {  }
    .method private hidebysig static void  Main(string[] args) cil managed
    {
      .entrypoint
      // コード サイズ       14 (0xe)
      .maxstack  2
      .locals init ([0] bool test2,
               [1] bool CS$4$0000)
      IL_0000:  nop
      IL_0001:  ldc.i4.0
      IL_0002:  stloc.0
      IL_0003:  ldloc.0
      IL_0004:  ldc.i4.0
      IL_0005:  ceq
      IL_0007:  stloc.1
      IL_0008:  ldloc.1
      IL_0009:  brtrue.s   IL_000d
      IL_000b:  nop
      IL_000c:  nop
      IL_000d:  ret
    } // end of method Program::Main
    以上是c#和生成il的对照,生成时如果没有选择优化代码,if(test)的形式反倒多了两步的处理2.最后一个看看.net框架的代码就知道微软才是始作俑者
      

  13.   

    第一个和第四个的写法完全没问题, 第四个也许是为了方便改变document.write的行为,比如function DocumentDotWrite(s){
        document.write("<div>" + s + "</div>");
    }
      

  14.   

    这样理解么...
    return a > 9 ? (b > 7 ? "A" :( b < 0 ? "B" : "C")) :( c == 5 ? "E" : "F");
      

  15.   

    我也发个脑残代码:Request.QueryString["uid"].toString();
      

  16.   

    推荐有此行为的人多看看《.NET设计规范》
      

  17.   

    if (result <= 10) {
        handling();
    }
    else if (result > 10) {
        otherHandling();
    }
    else {
        handling(); // to be sure
    }这是一种好的做法,这样如果第一个if满足了,就不用判断后面的了,如果douyongif就得多判断几次,这样让人逻辑上以为这些条件能同时发生
      

  18.   


    不一定吧,result 是 int?类型呢
      

  19.   


    a大于9同时 b大于7 返回字符串A,如果b小于0返回 字符串B,如果b大于等于0同时b小于等于7返回字符串C
    a小于等于9时同时c等于5时返回字符串E,如果不等于5返回字符串F
    结果就是A,B,C,E,F四中情况中一种
      

  20.   

    那你们有没有碰到过新手,明明一个 select sum(money)的SQL语句能解决的求和问题,他要在后台把money一个个取出来,然后相加!!!!!
      

  21.   

    这样写有可能会抛也异常,当url参数中不带uid的话,Request.QueryString["uid"]为null。
    null不会ToString();
      

  22.   

    在ToString()之前先判断是否为空,不为空再ToString()