V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coetzee
V2EX  ›  程序员

吐槽:维护别人的代码真蛋疼!

  •  
  •   coetzee · 2013-06-06 14:29:04 +08:00 · 6435 次点击
    这是一个创建于 4190 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天修改一个同事写的java代码,一个方法整整八百行,当时真想把《重构》甩他头上!
    37 条回复    1970-01-01 08:00:00 +08:00
    kylefeng
        1
    kylefeng  
       2013-06-06 14:37:52 +08:00
    重构后:xxxAdapter, xxxFactory, xxxBuilder, xxxManager, xxxHandler, xxxFilter, xxxFacade, xxxComponent 等等,一大坨。
    dreampuf
        2
    dreampuf  
       2013-06-06 15:44:12 +08:00   ❤️ 3
    怎么现如今还有人天真的以为一本《重构》就能呼唤醒人性的洁癖?!

    起码得九本:《GoF》,《重构》,《代码匠艺》,《代码大全》,《代码简洁之道》,《编码》,《人月》,《人件》,《修炼之道》

    啪啪啪!啪啪啪!啪啪啪! 的甩在他的脸上,让他知道,什么叫做码农!
    heroicYang
        3
    heroicYang  
       2013-06-06 15:46:22 +08:00
    既然都接手维护了,还有什么比重构烂代码更紧急的事情呢,哈哈,祝楼主好运!
    saharabear
        4
    saharabear  
       2013-06-06 15:48:31 +08:00
    见过一个牛人,过他手的代码,40%都会变得好起来。
    vietor
        5
    vietor  
       2013-06-06 15:56:43 +08:00
    重构是“纯心情”活,如果真如 @kylefeng 吐槽的那样,还不如不进行结构呢,按着原来的风格改。
    重构改的是“功能和扩展性”,不是“风格”。java这种语言最大的问题就是“类”的膨胀,如果将800行代码分出4、5个类来就不合算喽。
    Golevka
        6
    Golevka  
       2013-06-06 16:16:17 +08:00
    @dreampuf 虽但厉
    vvii
        7
    vvii  
       2013-06-06 16:19:13 +08:00
    @saharabear 60%的隐喻。
    acpp
        8
    acpp  
       2013-06-06 17:36:39 +08:00
    反之,别人维护你的也是一样。
    akira
        9
    akira  
       2013-06-06 19:21:15 +08:00
    今天修改一个同事写的java代码,一个方法能实现的东西,整了八个类出来,当时真想把《GoF》,《重构》,《代码匠艺》,《代码大全》,《代码简洁之道》,《编码》,《人月》,《人件》,《修炼之道》甩他头上!

    别人看你代码会这样吐槽不。。。
    brando
        10
    brando  
       2013-06-06 19:27:50 +08:00
    不要抱怨,默默的改進...加油!
    tyzc
        11
    tyzc  
       2013-06-06 20:32:17 +08:00
    @saharabear 必须对业务觉得了解才能修改,要不然就Bug了!!
    banxi1988
        12
    banxi1988  
       2013-06-06 21:09:40 +08:00
    @kylefeng
    @akira
    重构最多的是extract method。
    method name as a direct comments。
    哪里像你们说的就一定要extract 这么多类来,
    而且如果像你们说的搞这么多类的话,肯定是设计模式患者了。
    800多行的代码,要么是逻辑真的太复杂了。要不就是。太懒了。
    一直写,写啊写。吃完饭回来,写啊写。
    一不小心800多行了。下班了。......,然后.....
    wzxjohn
        13
    wzxjohn  
       2013-06-06 21:20:42 +08:00
    呵呵
    liwei
        14
    liwei  
       2013-06-06 21:29:31 +08:00
    彼此彼此
    judasnow
        15
    judasnow  
       2013-06-06 21:46:58 +08:00
    他的变量名全是用的拼音缩写而且没有文档吗(如 XX XQ CSRQ XGID XJJ ..)?
    没有的话 他对你已经很仁慈了。。。
    saharabear
        16
    saharabear  
       2013-06-06 23:15:02 +08:00
    @tyzc 靠单元测试。
    saharabear
        17
    saharabear  
       2013-06-06 23:15:22 +08:00
    @vvii 我很佩服能改10%以上的人。
    kk71
        18
    kk71  
       2013-06-07 08:55:21 +08:00
    pythoner飘过……java的类膨胀太可怕了
    aurorawu
        19
    aurorawu  
       2013-06-07 09:00:54 +08:00
    跟楼主握个爪,这两天我也是修改之前项目别人写的Java代码要疯掉了
    xiluo
        20
    xiluo  
       2013-06-07 09:04:03 +08:00 via Android   ❤️ 1
    不要为事情的开始而兴奋,不要为事情的结束而懊恼,不要为生活的开始而疯狂,不要为旅程的结束而伤感,一切随风而来,随风而去,自然自由自在,如云如海如山。
    RisingV
        21
    RisingV  
       2013-06-07 09:41:33 +08:00
    写点简洁点的代码,真的需要看那么多书吗?不妨自己仔细思考,提取抽象,照样能写得很漂亮。

    要知道设计模式不是本来就存在的,也是别人的经验。

    按照个人经验来讲,可以概括一下自己的抽象方式,然后和书上一比对,你发现自己重新发明了这些设计模式,你明了这些设计模式真正的适用场景,而不是死搬硬套,除了成就感还得到了很好的修炼。
    fishsjoy
        22
    fishsjoy  
       2013-06-07 10:26:44 +08:00
    @RisingV 中啊。
    感觉忽然就有人跳出来,说你一直用的方式都是他发明的,叫做“设计模式”。
    重要的是融会贯通,不是起个教条的名字。
    ijse
        23
    ijse  
       2013-06-07 10:41:13 +08:00
    呵呵 ,, 呵呵 。。
    zhangdawei
        24
    zhangdawei  
       2013-06-07 12:33:28 +08:00
    800行就扛不住了?
    我在维护的代码,一个function 3000多行,最多11层if/else/switch。
    sdslnmd
        25
    sdslnmd  
       2013-06-07 13:19:56 +08:00
    维护2K行的方法的微笑走过
    likexian
        26
    likexian  
       2013-06-07 13:31:30 +08:00
    我写了一个函数,3万多行,你们看着办
    alsotang
        27
    alsotang  
       2013-06-07 13:51:18 +08:00
    @likexian 这个函数最终会输出 42 吗?
    luikore
        28
    luikore  
       2013-06-07 14:25:31 +08:00
    换个语言就40行的事没人纠结长度了...
    Golevka
        29
    Golevka  
       2013-06-07 15:28:18 +08:00
    @likexian 这个函数最终会输出42吗?
    achellis
        30
    achellis  
       2013-06-07 23:19:36 +08:00
    String jsonData =" {
    // 800行
    }";

    XD
    ini
        31
    ini  
       2013-06-08 00:08:26 +08:00
    @alsotang @Golevka

    看来两位都已经知道宇宙的终极答案。。 :-D
    msg7086
        32
    msg7086  
       2013-06-08 04:55:06 +08:00
    @ini 这函数在运行到最后几行的时候好像会因为超时而被kill掉
    ini
        33
    ini  
       2013-06-08 20:27:31 +08:00
    @msg7086 这个说法的出处是?表示没看懂。。
    msg7086
        34
    msg7086  
       2013-06-09 07:12:41 +08:00
    @ini 为了建造高速公路而已
    whaon
        35
    whaon  
       2013-06-09 09:35:15 +08:00
    @alsotang 你内裤一定是黑色的
    samuel
        36
    samuel  
       2013-06-09 10:51:50 +08:00 via Android
    别人的代码永远没有自己的代码看着舒心啊,试着将维护别人代码看作是一种修行,你会更有收获的
    stevenhu888
        37
    stevenhu888  
       2013-06-09 10:56:38 +08:00
    哥,先不要考虑太多,先保证系统正常运行。。别改崩了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1277 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:01 · PVG 02:01 · LAX 10:01 · JFK 13:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.