Get rid of ugly if statements

后端 未结 25 2201
借酒劲吻你
借酒劲吻你 2020-12-02 05:59

I have this ugly code:

if ( v > 10 ) size = 6;
if ( v > 22 ) size = 5;
if ( v > 51 ) size = 4;
if ( v > 68 ) size = 3;
if ( v > 117 ) size = 2         


        
25条回答
  •  半阙折子戏
    2020-12-02 06:41

    I have one more version for you. I don't really think it's the best one because it adds unnecessary complexity in the name of "performance" when I'm 100% sure this function will never be a performance hog (unless someone is calculating size in a tight loop a million times ...).

    But I present it just because I thought performing a hard-coded binary search to be sort of interesting. It doesn't look very binary-y because there aren't enough elements to go very deep, but it does have the virtue that it returns a result in no more than 3 tests rather than 6 as in the original post. The return statements are also in order by size which would help with understanding and/or modification.

    if (v > 68) {
       if (v > 145) {
          return 1
       } else if (v > 117) {
          return 2;
       } else {
          return 3;
       }
    } else {
       if (v > 51) {
          return 4;
       } else if (v > 22) {
          return 5;
       } else {
          return 6;
       }
    }
    

提交回复
热议问题