吐槽:维护别人的代码真蛋疼! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
coetzee
V2EX    程序员

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

  •  
  •   coetzee 2013-06-0614:29:04 +08:00 6898 次点击
    这是一个创建于 4514 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天修改一个同事写的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     Solana     5353 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 01:16 PVG 09:16 LAX 18:16 JFK 21:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86