java吧 关注:1,216,297贴子:12,663,503

大家觉得代码经过了重构变得优雅了吗?

只看楼主收藏回复

昨天看到一个题目

几乎没思考,直接写出了版本1的方案

运行结果如下,很简单,没啥问题

但是总感觉不太优雅,不够面向对象,耦合也很大,传递的参数也比较多,于是花了10多分钟多次抽取成了以下


重构一次之后感觉还是有耦合,小朋友和他说的话没有任何关联关系。花了较长时间思考用什么设计模式更好,枚举的用法忘了,花时间看以前的枚举的用法的笔记才想起来。花了一点时间查翻译,还加了详细的注释,方法和字段的修饰符号也花了点时间思考。要不要静态,要不要final。第二次重构成了以下。这个重构有必要吗?


功能还是一样


IP属地:四川1楼2021-04-26 08:31回复
    懵了 围观


    IP属地:广西来自Android客户端2楼2021-04-26 14:22
    回复
      终极奥义是分析语义


      IP属地:湖北4楼2021-04-26 16:13
      回复
        能跑的代码就不要去动它


        IP属地:山西来自iPhone客户端5楼2021-04-26 18:22
        回复
          c


          IP属地:湖北来自Android客户端6楼2021-04-26 18:49
          回复
            取决于项目和人员不封装不好,过度封装也不好,这个度搞清楚了你就是架构师了


            IP属地:湖北来自Android客户端7楼2021-04-26 18:54
            回复
              你这重构没意义啊。
              如果现在是10个人呢
              那你岂不是要去修改枚举类?
              既然每个样例来了 你都要修改代码,也就是说你的代码都是一次性的,那这还有什么好重构的?
              如果你能做成n个小朋友都是控制台输入,他们说的话也是输入,抽象成boolean,那才有意义吧


              IP属地:浙江8楼2021-04-26 18:59
              收起回复


                IP属地:广东来自Android客户端9楼2021-04-26 19:18
                回复


                  IP属地:浙江10楼2021-04-26 19:52
                  回复

                    然后就可以很容易地改成接收外部输入


                    IP属地:浙江11楼2021-04-26 20:14
                    收起回复
                      确实没必要,计划赶不上变化


                      IP属地:广东来自Android客户端13楼2021-04-26 21:43
                      回复
                        不需要优雅的代码,只需要清晰的注解、接口还有优越低的内存分配。
                        搞这么多你老闆不会欣赏的


                        来自Android客户端14楼2021-04-26 22:15
                        回复
                          noob表示为啥看到这个题会想到位运算求解...


                          IP属地:湖北来自Android客户端16楼2021-04-27 07:33
                          回复
                            要不 学下设计模式再试试


                            IP属地:四川来自Android客户端17楼2021-04-27 09:01
                            回复