我发现公司里面最难的活并不是开发新产品新功能,而是在没有文档没有人会的老代码上增加功能 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
darknoll
V2EX    程序员

我发现公司里面最难的活并不是开发新产品新功能,而是在没有文档没有人会的老代码上增加功能

  •  
  •   darknoll 2021-06-04 08:42:59 +08:00 8061 次点击
    这是一个创建于 1589 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简直是太难了 孤立无援,每天都是绝望的心情,战战兢兢,不知道什么时候能干完活,甚至都不知道能不能完成功能 有时候踩到一个坑要花一两天时间解决,这就是传说中的苦活脏活累活了吧

    60 条回复    2021-06-08 14:54:36 +08:00
    wqgogogo
        1
    wqgogogo  
       2021-06-04 08:47:16 +08:00
    看代码一天,写代码一小时
    darknoll
        2
    darknoll  
    OP
       2021-06-04 08:51:24 +08:00
    @wqgogogo 写代码的时候全靠猜
    zjsxwc
        3
    zjsxwc  
       2021-06-04 08:53:31 +08:00
    所以要有好的设计,
    NetBeans 这些开源项目的源码都很容易上手。
    mazyi
        4
    mazyi  
    PRO
       2021-06-04 08:54:50 +08:00 via iPhone   4
    还好啦,至少你还有代码。。。见过 20 年前没有代码的项目要改的吗
    Cbdy
        5
    Cbdy  
       2021-06-04 08:54:51 +08:00 via Android
    不想改可以提桶跑路
    Hconk
        6
    Hconk  
       2021-06-04 09:02:28 +08:00 via iPhone
    @mazyi 给二进制文件打 patch 吗,之前看过一篇文章就是直接改二进制文件修 bug 。
    taogen
      &nsp; 7
    taogen  
       2021-06-04 09:13:09 +08:00
    我也经历过。无数人接手,无数个人的屎山,没有文档,只能硬啃代码,然后继续在屎山上堆代码。
    我的做法是部分重构,老的模块不管,新的模块不参考之前的代码而是自己重新搭建一套基础结构上写。
    mazyi
        8
    mazyi  
    PRO
       2021-06-04 09:15:52 +08:00
    @Hconk 是的,都不是正常的开发干的事情了,感觉自己是一个黑客 hhhhh
    AngryPanda
        9
    AngryPanda  
       2021-06-04 09:15:57 +08:00   1
    增加功能不是最难的,而是要求你重构这些老代码。
    zhongjun96
        10
    zhongjun96  
       2021-06-04 09:18:05 +08:00   1
    我司乙方跑路,没给源码,只给了安装包,只能反编译出来继续改。变量名全是 i1,i2,i3 。老代码最起码看字段命名还能猜一猜
    leven87
        11
    leven87  
       2021-06-04 09:20:38 +08:00   1
    这种代码怎么通过代码评审的,不规范的公司还是跑路吧,反正也学不到什么东西
    AngryPanda
        12
    AngryPanda  
       2021-06-04 09:22:07 +08:00
    @leven87 如果钱还行呢,舍不得跑啊
    ningfan120
        13
    ningfan120  
       2021-06-04 09:25:43 +08:00
    PS0977yM5aKe5Yqg5Yqf6IO95Lmf5aW96K+077yM5pyA5oCV5aKe5Yqg5Yqf6IO95L6d6LWW5LmL5YmN6ICB5Luj56CB55qE77yM55yL5LiA5aCG5bGx44CC44CC44CC44CC44CC44CC
    darknoll
        14
    darknoll  
    OP
       2021-06-04 09:27:26 +08:00
    @zhongjun96 这活你接了?
    zhongjun96
        15
    zhongjun96  
       2021-06-04 09:28:18 +08:00
    @darknoll #14 打工人,没得选择的权利
    darknoll
        16
    darknoll  
    OP
       2021-06-04 09:31:46 +08:00
    @zhongjun96 如果是 C#那种还好一点,如果是 C/C++的话,感觉没法改啊
    sadfQED2
        17
    sadfQED2  
       2021-06-04 09:32:42 +08:00 via Android
    @zhongjun96 大佬牛逼,收下我的膝盖
    Exin
        18
    Exin  
       2021-06-04 09:48:17 +08:00
    俺也一样!成就感全无
    bagel
        19
    bagel  
       2021-06-04 09:56:27 +08:00
    没有文档没啥影响,好的代码本身就是文档。怕的是代码本身质量不行。。
    pkoukk
        20
    pkoukk  
       2021-06-04 10:34:21 +08:00
    老的可以维护,拒绝增加功能。
    增加功能一律新写
    GG668v26Fd55CP5W
        21
    GG668v26Fd55CP5W  
       2021-06-04 10:41:20 +08:00 via iPhone
    无他,唯手熟尔
    TokyoNight
        22
    TokyoNight  
       2021-06-04 10:47:00 +08:00
    而且这种改完还最容易出 bug
    fkdtz
        23
    fkdtz  
       2021-06-04 10:48:53 +08:00
    在屎山上拉屎,之后交给下一个人
    justseemore
        24
    justseemore  
       2021-06-04 10:50:02 +08:00   2
    还有比这难的。。 除了线上。。线下代码根本跑不起来。。
    geekboy
        25
    geekboy  
       2021-06-04 10:50:41 +08:00 via Android
    有同感
    fengjianxinghun
        26
    fengjianxinghun  
       2021-06-04 11:43:33 +08:00
    @darknoll patch 汇编 注入,当然能,难是难点
    lifespy
        27
    lifespy  
       2021-06-04 13:10:15 +08:00
    @zpfhbyx #24 哈哈,我之前遇到一个项目就是,只能文件替换的,java
    Kv_se7en
        28
    Kv_se7en  
       2021-06-04 13:25:10 +08:00
    我这也遇到过,另一个项目组散了,我们接,然后项目代码不全,配置项不全,安装的有些 npm 组件是私有的,非常醉人。
    charlie21
        29
    charlie21  
       2021-06-04 13:31:59 +08:00
    @pkoukk #20 敢问是写什么语言 用什么 SDK 的
    arbit
        30
    arbit  
       2021-06-04 13:35:19 +08:00
    @taogen 额不参考之前的代码的话,等到你离职的时候,下个接手的人又是一堆更高的屎山
    Rocketer
        31
    Rocketer  
       2021-06-04 13:46:25 +08:00 via iPhone
    我也搞过,而且我想写个独立插件插进去用还不允许,领导逼着我拉跟以前风格一样的屎
    yimity
        32
    yimity  
       2021-06-04 14:00:28 +08:00
    我现在经常干的事就是在我们 12 年 extjs 4.1.2 的没有文档的系统中加功能,改代码。
    v2erxh
        33
    v2erxh  
       2021-06-04 14:33:33 +08:00
    再加一条:测试环境没办法测
    Routeros
        34
    Routeros  
       2021-06-04 14:39:53 +08:00
    本来就是啊
    xuanbg
        35
    xuanbg  
       2021-06-04 14:50:58 +08:00
    盲生,你终于发现了华点!
    iovekkk
        36
    iovekkk  
       2021-06-04 15:37:16 +08:00
    没有文档算什么
    我现在去紧急支援一个项目
    这个项目有六七百个 bug 要修复
    但是我没有测试车机去运行调试代码
    然后跟我说要我尽快熟悉,把修 bug 的速度提上去
    kamal
        37
    kamal  
       2021-06-04 16:12:45 +08:00
    @iovekkk #36 在线调试,可刺激了
    yhyh
        38
    yhyh  
       2021-06-04 16:45:22 +08:00
    这不就是我吗,淦。特么的 人都要抑郁了
    Peikon
        39
    Peikon  
       2021-06-04 16:53:12 +08:00
    更难的是 对没有文档没有人会的老代码进行重构
    taowen
        40
    taowen  
       2021-06-04 17:05:56 +08:00
    https://mp.weixin.qq.com/s/UtBkJYpQHIvRQ_AQnzxxMw 如何不 Review 每一行代码,同时保持代码不被写乱?
    JRay
        41
    JRay  
       2021-06-04 17:39:50 +08:00
    曾经在几个公司这么干过
    baba233
        42
    baba233  
       2021-06-04 18:03:51 +08:00
    @zhongjun96 能看懂也是个人才
    chaleaoch
        43
    chaleaoch  
       2021-06-04 22:35:42 +08:00
    Java 牛逼的地方就在这里啊...
    如果是用 python 写的够你喝一壶的.
    hyqCrystal
        44
    hyqCrystal  
       2021-06-04 22:36:29 +08:00
    没文档 没注释 4700 行的 service 代码 加新功能 重构
    noyidoit
        45
    noyidoit  
       2021-06-04 23:49:56 +08:00
    最近就在做这种活。。。领导叫我边看代码边写文档
    learningman
        46
    learningman  
       2021-06-05 00:02:13 +08:00 via Android
    不错了,至少你还能用 IDE 写
    碰到只能用 olleydbg 的才是疯
    sugar2101
        47
    sugar2101  
       2021-06-05 01:30:45 +08:00
    某国政府项目,从 77 年开始堆积的屎山,文档是纸质的,轻轻一碰纸就要碎了的那种破旧手册,只能运行在 Solaris 系统上,需要升级添加新功能。做了一年感觉自己铲屎的能力得到了升华
    Addup
        48
    Addup  
       2021-06-05 05:09:11 +08:00
    @hyqCrystal 准备接手一个没文档, 没注释, 一个文件上万行, 整个工程上百个文件的屎山
    xuanbg
        49
    xuanbg  
       2021-06-05 07:03:53 +08:00
    @Addup 你这个充其量只能算是比较臭的大屎堆,还不够资格叫屎山。
    bclerdx
        50
    bclerdx  
       2021-06-05 08:22:41 +08:00 via Android
    @Addup 所以,写任何技术文档资料、注释说明很重要,这样后人好乘凉,避免在某些地方踩坑、犯错及注意的事项。
    darknoll
        51
    darknoll  
    OP
       2021-06-05 10:26:46 +08:00
    @bagel 如果代码写的好,我要啥文档?我都不会发这个帖子
    a719031256
        52
    a719031256  
       2021-06-05 10:39:15 +08:00
    @zjsxwc 项目代码哪有那么多时间去排版代码,反正能跑就行,遇到有注释的代码还好,没注释没实体,入参出参全是 map 的更蛋痛
    hqweay
        53
    hqweay  
       2021-06-05 15:23:38 +08:00
    文档注释很迷惑人啊。我这的文档注释基本没啥参考作用……读 Clean Code,里面说到注释比不上结构良好的代码,这时才体会到里面的意思。一段代码经过了无数人的手,注释没维护过……又或者代码连带注释是前人从别处 CV 过来的……文档同理。。
    zm8m93Q1e5otOC69
        54
    zm8m93Q1e5otOC69  
       2021-06-05 16:14:21 +08:00
    多写注释。。我习惯写注释,甚至用 link 之类的标明相关的类。。
    LiSrRbE2Mac
        55
    LiSrRbE2Mac  
       2021-06-05 17:00:28 +08:00 via Android
    一份代码多经手几个人,只要有人偷懒,文档和注释就逐渐对不上了
    lululau
        56
    lululau  
       2021-06-05 18:51:03 +08:00 via iPhone
    一般复杂程度的系统,业务代码只要有靠谱的产品需求文档就够了吧
    wobuhuicode
        57
    wobuhuicode  
       2021-06-06 20:05:40 +08:00 via iPhone
    我一般把自己的新功能写到一个新方法里。在这里引入试试,那里引入试试。跑起来没事就行。
    efaun
        58
    efaun  
       2021-06-06 21:08:29 +08:00
    直接进 debug 模式写代码
    taogen
        59
    taogen  
       2021-06-07 16:16:05 +08:00
    @arbit #30
    这样做当然前提要对自己有信心,不然还是按照之前的写法写。比如,对算法,设计模式,代码整洁规范等有一定学习和理解。
    liuky
        60
    liuky  
       2021-06-08 14:54:36 +08:00
    @hyqCrystal 2 万行 service 都有, 4700 真不是事
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3675 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 10:21 PVG 18:21 LAX 03:21 JFK 06:21
    Do have faith in what you're doing.
    ubao 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