• 公司项目代码——发现连续7、8个的if..else ….,元芳,你怎么看?

    03/23 开云 80 评论

今天看公司项目代码,发现有处代码中有连续7、8个的if..else ….,元芳,你怎么看?

1 收藏


直接登录
最新评论
  • 三木成森 前端开发 03/23

    说明要头晕了~

    • 开云 梦想咨询师 03/24

      头晕又无语了,本来就是一个switch case的事,偏偏就写了那么个的if else

      • KarlSunstrider C# 03/24

        if else里可以重复声明变量互不影响啊,所以偷懒的时候我也这么写,但是一般都是2-3个if的时候,7-8个就太过了…

        • 开云 梦想咨询师 03/24

          确实,2-3个倒也没啥,如果太多的状态值判断处理,那就还是switch case 分开写比较的好

  • 李新   03/24

    我看过if else和switch case互相套6层以上的,我原本给过的模板,丫的非异想天开的改成这种效率极低,一次一次判断的处理,现在想往回改都改不成。

  • show_time 程序员 03/24

    可能实习吧

    • 开云 梦想咨询师 03/24

      搞不清楚,无意看看其他模块的代码,然后就看到这一幕了

  • Scofield Lee 程序猿 03/24

    顶多就if elseif else,再多的想写头也晕了,理不清楚,直接switch case,代码量少不说,思路清晰的很

    • 开云 梦想咨询师 03/24

      对啊,像这种状态值状态,用switch case 多好啊,又不是什么其他条件判断

      • 阿狸先森 java软件攻城师 03/24

        万一比较对象不是整形了,你想过没有,或者比较对象是多个参数了,你想过没有

        • 开云 梦想咨询师 03/24

          ……

          这个成型项目的代码,此处的状态值类型已经定型了。如果还有万一,那就不是这一处的if..else…的事了

          • 阿狸先森 java软件攻城师 03/24

            一看你就是工作不久的,呵呵吧,别忘记,人家写的时候项目还没有成型

            • thyt 学生 03/24

              不同的情况可以用不同的数值来代表啊,逻辑没闭合的部分就在default分支。而且我不懂什么是比较对象?

              • 阿狸先森 java软件攻城师 03/24

                兄弟,但是不是你想想中,不同的情况只有一个状态,或许很多个状态了,而且,实际开发中,需求会变的,会变得,你要懂,需求会改的

                • thyt 学生 03/24

                  哈哈哈哈gtmd改需求!总之最终目标就是保证可维护性易读性嘛。

                  • 阿狸先森 java软件攻城师 03/25

                    事实上,该需求的人,根本不关心你代码是否可维护,也不关心你代码怎么样,他们只关心他们的功能能不能实现

            • 开云 梦想咨询师 03/24

              嗯嗯,虽然看你说话有点冲,但有道理,学习了,以后看别人代码会多多理解的,多站在同事当时的立场想想。

              • 阿狸先森 java软件攻城师 03/25

                看代码,你要淡定给你看段代码

                String[] arrs=…;

                int index=0;

                String name=arrs[index++];

                String pwd=arrs[index++];

                String sex=arrs[index++];

                兄弟作何感想,这段代码

                • 开云 梦想咨询师 03/29

                  赞,写这段代码的构思很奇特啊,。

                  • 阿狸先森 java软件攻城师 03/29

                    这代码,只要有人注释了中间的任何一句,或者修改了数组存放数据的顺序,你懂的

  • 雇佣兵1979 打字员 03/24

    ,if只是表达式 ,不同编译器或解释器类型不一样。如果第一个if放入一个处理器执行,第二个if放入另一个处理器…,这样算并行系统吗?具体应用没有接触过,只是个人理解。

     

    • 开云 梦想咨询师 03/24

      if..else.. 主要是通过一个一个的遍历的判断的,而switch case 是通过维护一个跳转表来实现,相比于if 来说,若业务条件适用于switch,则用switch性能要高,逻辑也清晰。

      至于说,同一代码块中的连续的if else 放不同处理器运行,,这种清况难以理解,不清楚

  • 会瑜伽的前端渣 前端 03/24

    这都还好,现在新公司的官网要兼容手机端,同样的排版N个文件里面,找得我想哭着回家找妈妈。改别人的代码真的想哭

  • liu_administrator web程序猿 03/24

    这不是if else的错,有的时候维护别人的代码,真的有种骂人的冲动

  • 负西弱 嵌入式软件工程师 03/24

    对于干嵌入式用C的我来说,如果if里面比较的是字符串之类的就没什么毛病

    • thyt 学生 03/24

      嗯比较字符串用查找表会好些吗

    • 开云 梦想咨询师 03/24

      哇,嵌入式用C,感觉很厉害,当时也好想能入行嵌入式用,,嗯嗯,java比较字符串其实也可以用switch的, 在1.7后就支持了

  • htoo3521   03/24

    先熟悉业务,然后和当事人一起讨论重构

  • 隃墨 机器学习 03/25

     

    • 隃墨 机器学习 03/25

       

    • snowfeng1999 休假 03/25

      def f1:

      if (con1)

      {

      return a1;

      }

      if (con2)

      {

      return a2;

      }

      if (con3)

      {

      return a3;

      }

      reuturn 0;

  • 奔跑的ksun 软件工程师 03/25

    我看,你改的一定不仅是二手代码,可能是N手的

  • Tiegeda 猿序程 03/25

    若要比较字符串,如果switch只支持数值型你怎么写?像c/c++中。

    我是没想到好办法,见过几十个if else的,其实有时候刚开始是只有几个if else,后来可能很多人都要在这里加代码,就沿袭旧风格咯,大家都想做完自己的工作,谁没事会去乱改,改出问题咋办。老代码,只要用着没问题,就别手痒。

    • thyt 学生 03/25

      比较字符串就查找表啊,建立数值和字符串的映射嘛。

    • 开云 梦想咨询师 03/25

      对啊,老大都不让我们重构代码,重构一部分,测试又得全部重新测试

  • marsprince   03/25

    很正常啊,需求天天变,原来只有两个状态,后期可能随着产品的要求变成7,8个状态,重构了费力不讨好,放着去呗

    • 开云 梦想咨询师 03/25

      嗯,确实,毕竟那都是从刚开始定项时的代码了

      • 诸葛不亮 Qt/C++程序员 03/26

        所以要勤快点,第一次出现和设计不兼容的需求变更时,就要果断重构成多态的,免得继续挖坑

        • 开云 梦想咨询师 03/26

          不敢啊,老大不让随便重构优化代码,如果总是在不断重构,测试的工作量太大了,每次都得全部重新跑测试用例

  • o风清扬o C语言软件开发工程师 03/26

    我见过更多的,后来想改觉得太复杂放弃了

  • o风清扬o C语言软件开发工程师 03/26

    其实重构代码所带来的工作量很大,既要跑过现有的自动化又可能会引入新的问题.

  • 凌乱 Java程序员 03/27

    我写过这样的代码,是不得已啊。因为编译环境是1.6,而switch支持字符串需要1.7以上的。

  • 阏男秀   03/28

    可以用函数表驱动法啊!

  • 我见过4个if else 嵌套五六个for语句的

     

  • Leonard java 03/28

    才7,8个,我遇见的,给你看看。

    一个类 2000多行,都在set数据。

    后面的反射是我新加的。前面的改起来不费事,但是测试费事。我就不动了

    • 开云 梦想咨询师 03/29

      这块代码真是难以理解当时写的情景啊

      • Leonard java 03/30

        可能因为前期设计不够,没有使用模板方法。

        后面开发的人也就在ifelse后面续写。。

  • draven21 iOS开发 03/28

    switch case 不能用变量 这是个问题 比如 case a:

  • BurnellLiu 程序员 03/29

    哈哈,你工作的时间可能不是很长吧。我觉得工作2-3年的人就会对这种情况见怪不怪了,2000行的构造函数见过没?

    • 开云 梦想咨询师 03/29

      嗯,刚工作不久。2000多行的构造函数。。。。。这是什么一种情景啊

  • Excited   03/29

    要看具体情景的吧

     

  • 村长助理 软件工程师 03/29

    不要去抱怨别人的代码好与不好,如果看不顺眼你可以优化。

    • 开云 梦想咨询师 03/29

      没有抱怨啊,只是想听听各位工作多年的前辈们的看法,学习学习

  • 过火   03/29

    表示写LUA的时候,没有SWITCH

  • ximi0 C++ 03/30

    无奈

  • jiacai2050   03/30

    没觉得多大的问题呀,场景你都不知道怎么好意思喷

  • Tean BUG生成器 04/18

    靠,不这么写怎么有KPI

  • micro 软件攻城狮 04/19

    可以用策略模式?

  • SIX_X6 攻城狮 04/19

    同楼主呐!我这边也是,哈哈哈,凉拌着,等自己真正理清了业务,就按照自己的方式做做修改吧,噗~

  • 南柯太守   04/19

    你是没见过40多个的,直接把新来的同事吓走了。。。。

  • 斌斌1987   04/19

    重构掉呗。

  • 夜风   06/10

    在我的上一个项目中,我写了起码不下100的if,只是一个界面而已,我用的是nodejs和mongodb,为什么要这样的,因为条件不是单一的,而且需求太变态,除了这个方法,想不出其他的解决方法,你都不知道那逻辑,我看着都想吐,但是又有啥办法呢,在一个界面里要切换12张表的数据,有些要算,又是又不用算,逻辑就复杂了,我觉得谁能整合我的代码,肯定是超神

  • 夜风   06/10

    对了,那个项目我在另一个界面写了一个switch,就case 了30种,你说好玩不

  • 林蛋凡 Android喵 06/10

    还好啦    我看到一个哥们 在for循环里自己加条件做了个  continue的功能…

    想了许久不知道为什么不直接用continue

  • midle110   06/13

    这有什么好奇怪的,以前偏向硬件的时候,手里的代码传输还有通过字符串传输的,不是json的有规律的字符串,自己定义的,解析还tmd超费劲。关键是没文档,只能猜是什么意思。两三年你就会发现,什么奇葩都有了

  • 记住一座城 PHP 06/13

    这种代码重构起来也头痛,能不改就尽量不要去改,容易引入新的Bug

  • $(John Resig) web前端开发 06/13

    要理解理解新手的代码,毕竟还在奋斗的路上~

  • $(John Resig) web前端开发 06/13

    对新手充分的理解呗~毕竟还在努力的大道上~