现在体会到了多人开发带来的痛苦 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Akiyu
V2EX    职场话题

现在体会到了多人开发带来的痛苦

  •  1
     
  •   Akiyu 2018-06-21 10:46:35 +08:00 7614 次点击
    这是一个创建于 2680 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在着手维护老代码, 之前共同开发代码的人已经离职了, 最近是真被这代码弄得焦头烂额...

    举个例子, A 创建了这个项目, 实现了基本的功能, 然后 A 去做其他的了

    这时候 B 来了, B 的任务是在这个框架之上添加一个功能
    (他并没有和 A 沟通, 沟通不彻底, 或者这时候 A 没时间, 等等原因)
    B 不熟悉这个框架, 加功能的时候需要一个参数(函数), 这个参数(函数)本来在 A 写的代码里面有了
    但是 B 不知道, 自己动手把这个参数(函数)实现了, 好, B 完成任务了.

    然后又来了 C, C 实现功能的时候他只看到了 B 的那部分(或者 A 的部分), 他以为把这里改了就好了
    就只改了一处, 或许因为逻辑的原因暂时没有问题 (也许 C 看到了问题所在, 但是要把框架纠正过来太麻烦了, 他只管实现就行了), C 好像也完成任务了. ...

    到最后来维护这个代码的人面对的就是坑坑洼洼的代码
    没有人对接, 这样他即使能改, 改出来的也是坑坑洼洼的代码...
    我现在大概就在做这样的事, 好痛苦...

    PS:谁写的谁来维护, 鬼 TM 才想看这样的代码

    54 条回复    2018-07-12 17:33:54 +08:00
    wxsm
        1
    wxsm  
       2018-06-21 10:50:41 +08:00
    上了年纪的项目绝大多数都是类似这样的的。。。。习惯就好
    UIXX
        2
    UIXX  
       2018-06-21 10:56:26 +08:00   1
    重构之,强迫症的唯一选择
    jayin
        3
    jayin  
       2018-06-21 10:56:36 +08:00
    习惯就好了。。
    liuguangcuican
        4
    liuguangcuican  
       2018-06-21 10:59:57 +08:00
    我现在正在对一个从 08 年活到现在的项目进行重构,感觉自己会在重构完之前跑路
    mseasons
        5
    mseasons  
       2018-06-21 11:01:03 +08:00
    我记得轮子哥说过一次 office 的代码就有这种情况。
    mrzx
        6
    mrzx  
       2018-06-21 11:01:18 +08:00
    你只能重构。

    多人开发都是这样。没办法

    而且很多人交接的时候,故意会将代码里的注释全部删除。
    缺乏职业道德。
    icy37785
        7
    icy37785  
      &nbp;2018-06-21 11:05:49 +08:00 via iPhone
    说实话,我自己一个人的项目,不同阶段再去维护,最后慢慢的都会变得坑坑洼洼。
    Akiyu
        8
    Akiyu  
    OP
       2018-06-21 11:11:27 +08:00   4
    重构是不可能的, 这辈子都不会重构
    别人拉的屎, 凭什么要我来擦屁股.
    而且重构面临的问题和代码量, ... 无力 ...
    alexnevsky
        9
    alexnevsky  
       2018-06-21 11:17:53 +08:00
    @Akiyu - -||,
    cross874
        10
    cross874  
       2018-06-21 11:20:42 +08:00
    拿出作家的心态写代码就行喽
    前面代码写成什么样不管,等于是一本书,前面的剧情可以彻底不理,就看当前剧情什么样,往下写就好。你不是银弹也不是救世主,只是来开发新的需求....
    SakuraKuma
        11
    SakuraKuma  
       2018-06-21 11:28:41 +08:00
    不然以为重构是怎么来的 ( 逃
    df4VW
        12
    df4VW  
       2018-06-21 11:30:57 +08:00
    没有测试

    有测试再屎的代码我都愿意改

    没测试就凭天意了
    lincanbin
        13
    lincanbin  
       2018-06-21 11:32:52 +08:00
    我最近在重构一个完全没有一行注释的系统。
    rogwan
        14
    rogwan  
       2018-06-21 11:35:02 +08:00 via iPhone
    你现在是 D?E?F?还是...N?
    Akiyu
        15
    Akiyu  
    OP
       2018-06-21 11:40:23 +08:00
    @rogwan 鬼知道...
    公司是外地搬过来的, 之前的程序大多都离职了
    lululau
        16
    lululau  
       2018-06-21 11:44:44 +08:00   1
    说重构的不知道重构的前提是要有测试吗
    yylucifer
        17
    yylucifer  
       2018-06-21 12:39:12 +08:00
    你这不是“多人开发”

    你这是项目维护的问题。。

    标题党。。
    pathbox
        18
    pathbox  
       2018-06-21 12:42:34 +08:00 via iPhone
    遇到维护他人复杂代码模块的时候其实没有把他完全重构一遍的爽
    heikejia
        19
    heikejia  
       2018-06-21 13:28:17 +08:00 via iPhone
    版本控制与代码 review 了解下
    dong3580
        20
    dong3580  
       2018-06-21 13:35:13 +08:00
    code review
    l00t
        21
    l00t  
       2018-06-21 13:52:50 +08:00   1
    没有把握千万别重构。真要重构也要一小部分一小部分来,一下改太多容易捅娄子。
    重构的前提是要有完整的测试。而完整测试的前提是要了解详尽的需求。不然你就给自己挖坑了。
    sammo
        22
    sammo  
       2018-06-21 13:54:17 +08:00 via iPhone
    应该先熟悉项目
    1014166283
        23
    1014166283  
       2018-06-21 14:36:41 +08:00
    没有文档吗?也不做交接工作?
    quickma
        24
    quickma  
       2018-06-21 14:46:58 +08:00
    这不是很正常的事情吗?项目管理为 0 的中国软件,这是阵痛,一定要相信哈哈哈哈
    jerry033
        25
    jerry033  
       2018-06-21 15:04:18 +08:00   1
    所以说 Linux 真是个奇迹啊
    virus94
        26
    virus94  
       2018-06-21 15:53:11 +08:00
    唉 我这边也是一个项目经手五六个人,代码里全是补丁,直接重写了 0.0.
    cxh116
        27
    cxh116  
       2018-06-21 15:57:10 +08:00
    代码上的痛苦算个什么?

    小马,我有个不错的 idea ,明天帮我实现,争取后天上线.
    Viztor
        28
    Viztor  
       2018-06-21 16:53:42 +08:00
    这哪里是多人开发。
    这是连续断层式单人开发。
    freedom3
        29
    freedom3  
       2018-06-21 17:27:51 +08:00   1
    这叫祖传代码
    loveCoding div class="fr">     30
    loveCoding  
       2018-06-21 18:16:23 +08:00
    跟多人没关系 , 跟团队代码质量管理有关 ,
    caiya21
        31
    caiya21  
       2018-06-21 19:23:06 +08:00
    难道 真的是 没有文档 没有注释。。。
    caiya21
        32
    caiya21  
       2018-06-21 19:25:21 +08:00
    我也有一段重构完别人写的系统过后 接着就跑路的经历 说多了都是泪。。。
    albertofwb
        33
    albertofwb  
       2018-06-21 21:50:52 +08:00
    @jerry033 linux 有 linus 在一直评估各个 PR
    albertofwb
        34
    albertofwb  
       2018-06-21 21:52:20 +08:00
    楼主,我的感觉跟你一样
    我现在就处于你描述的 C 或 D 的状态。MD 一开始不熟悉代码,手写了几个轮子,实际上代码库里都有

    慢慢的,项目熟悉了,一边修修改改,一边小范围重构,倒也还阔以
    20015jjw
        35
    20015jjw  
       2018-06-21 23:28:58 +08:00 via Android
    命名差也会导致这个问题
    HangoX
        36
    HangoX  
       2018-06-22 01:03:39 +08:00 via Android
    所以你们不写文档的吗?不建立文档索引的吗?不然谁知道
    HanSonJ
        37
    HanSonJ  
       2018-06-22 01:09:11 +08:00
    review 的重要性
    ericls
        38
    ericls  
       2018-06-22 01:37:56 +08:00 via iPhone
    Mob programming 了解一下
    Lentin
        39
    Lentin  
       2018-06-22 01:41:07 +08:00 via iPhone
    又不是不能用.jpg
    Lwf1995
        40
    Lwf1995  
       2018-06-22 06:37:17 +08:00 via Android
    我在的公司创业公司,老总减少成本都招兼职,这个项目都不知道几十个人改过。。。。然后我也是另批方法,没办法
    sumu
        41
    sumu  
       2018-06-22 07:20:13 +08:00 via iPhone
    千万别一激动就大规模重构,一般都是给自己挖坑,老板还看不到你的绩效。重构有点类似搞大扫除,搞完自己住觉得爽,但对于房子的价值而言提升很小。一个可行的策略是延长时间线,在不影响开发和维护的基础上逐步抛弃
    MoHen9
        42
    MoHen9  
       2018-06-22 09:02:01 +08:00 via Android   1
    1.推到,重来。

    我接手项目之后,发现项目的每一个文件都散发着腐烂的气息,需要即可着手准备重构,但是东西太多了,可以说是牵一发而动全身,改完之后,会出现莫名只奇妙的 bug,不敢改,就想着推到重来,先想到的是做成微服务,着手学习微服务,东西太多,勉强改了最重要的模块,其他的先不管。

    2.跑路

    改着改着发现能力不够,只给 4k 的 money,又做驴(Android)又做马(后台),有时还得做骡子(前端页面从“设计”到实现,还有测试),实在是累,跑路 ing。
    MoHen9
        43
    MoHen9  
       2018-06-22 09:02:57 +08:00 via Android
    打错字了,是推倒
    iqav
        44
    iqav  
       2018-06-22 09:31:25 +08:00
    题外话。未来有没有一种程序,能把代码全息投影出来,自动分析 /分解代码结构逻辑关系,然后给出最优解决方案,并能自动执行整理工作,就像电影里边一样(笑)
    mingyun
        45
    mingyun  
       2018-06-22 09:59:31 +08:00
    如果有时间精力就重构吧 不过万一你又离职了,这个坑又留给别人了 [doge]
    lcdxiangzi
        46
    lcdxiangzi  
       2018-06-22 10:31:03 +08:00
    @l00t #21 很中肯,真的需要谨慎。
    Akiyu
        47
    Akiyu  
    OP
       2018-06-22 11:00:47 +08:00
    @iqav 可能会有... 话说这不是别人眼中的程序么
    我身边的不知道程序的都以为程序坐办公室敲敲代码, 空调吹着
    薪水不错, 偶尔加加班, 日子过得不错.
    然而呢...
    mengyaoss77
        48
    mengyaoss77  
       2018-06-22 11:06:48 +08:00
    我现在也在维护这样的一个项目, 坑坑洼洼, 不知道从哪里动刀子.
    而且我还是实习, 也没这个能力去动刀子..
    May725
        49
    May725  
       2018-06-22 13:15:44 +08:00 via iPhone
    @iqav 都给出解决方案了,再直接改了,测试也一起做了,nice
    nevermind1998
        50
    nevermind1998  
       2018-06-22 21:17:33 +08:00
    最的是或是覆很少
    改都改的怕怕的
    4Cc591Jn8fO27s4A
        51
    4Cc591Jn8fO27s4A  
       2018-06-24 06:56:44 +08:00 via iPhone
    代码风格超级烂的,最近要看吐了
    dragonszy
        52
    dragonszy  
       2018-06-24 17:16:20 +08:00
    千万不要重构,给自己挖坑。重构这种事由竞争对手做就行了。
    Leigg
        53
    Leigg  
       2018-06-25 09:00:21 +08:00 via iPhone
    钱多混着干,钱少你懂的
    jiangbingo
        54
    jiangbingo  
       2018-07-12 17:33:54 +08:00
    UT+ refactor.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     947 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 21:18 PVG 05:18 LAX 14:18 JFK 17:18
    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