公司项目代码太恶心了怎么办 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
unco020511
V2EX    程序员

公司项目代码太恶心了怎么办

  •  
  •   unco020511 2022-12-27 16:06:11 +08:00 11339 次点击
    这是一个创建于 1026 天前的主题,其中的信息可能已经有所发展或是发生改变。

    国内知名软件,源代码居然这么屎,每天面对这些代码都很痛苦

    69 条回复    2022-12-29 14:35:24 +08:00
    hahadaxigua834
        1
    hahadaxigua834  
       2022-12-27 16:07:59 +08:00
    6 字
    FranzKafka95
        2
    FranzKafka95  
       2022-12-27 16:08:38 +08:00 via Android
    那就靠你一己之力重构啊
    lingex
        3
    lingex  
       2022-12-27 16:10:38 +08:00 via Android   18
    无所谓,自己也拉一点上去。
    hccsoul
        4
    hccsoul  
       2022-12-27 16:12:19 +08:00
    重构不了就加入
    unco020511
        5
    unco020511  
    OP
       2022-12-27 16:17:37 +08:00
    @hahadaxigua834 #确实 6 字真言解决一切问题
    jorneyr
        6
    jorneyr  
       2022-12-27 16:18:29 +08:00
    能跑就行。
    unco020511
        7
    unco020511  
    OP
       2022-12-27 16:20:02 +08:00
    @jorneyr #6 你说的是人能跑还是代码能跑
    allgy
        8
    allgy  
       2022-12-27 16:20:56 +08:00
    跑路
    aaronlam
        9
    aaronlam  
       2022-12-27 16:22:11 +08:00
    想了解下是什么知名软件,可以再透露点信息吗 ?哈哈
    tool2d
        10
    tool2d  
       2022-12-27 16:24:38 +08:00
    分两种情况,一种是代码真的巨烂,那是没办法。

    另一种只是代码量太大,项目不太好管理。那可以写一点小工具,提取代码里的特殊注释信息,归档后进行有针对性功能查找和代码行跳转。

    只依靠人脑,去管理大量代码,时间一长必定会忘记一大半。
    visper
        11
    visper  
       2022-12-27 16:38:23 +08:00
    强中自有强中手,一山还有一山高. 不要以为你现在遇到的就是最高的屎山
    eason1874
        12
    eason1874  
       2022-12-27 16:40:25 +08:00   4
    我以前看到自己几年前的屎山,必定重构,每次都增加工作量,后来忙不过来了,就接受现实了。。。能跑就行,还要什么自行车

    我的逻辑是这样的:你不能用现在的标准去衡量以前的产出,都几年了,技术进步了,公司要想进步就应该给工作计划去升级,如果不给任务就说明公司还满足于几年前的产出
    NGXDLK
        13
    NGXDLK  
       2022-12-27 16:43:24 +08:00
    @hahadaxigua834 又不是不能用,哈哈
    NGXDLK
        14
    NGXDLK  
       2022-12-27 16:43:55 +08:00
    打不过就加入
    rm0gang0rf
        15
    rm0gang0rf  
       2022-12-27 17:12:51 +08:00   2
    恕我直言,你是想另启一坨?
    ianEros
        16
    ianEros  
       2022-12-27 17:30:26 +08:00
    我感觉除非定期的重构,并且研发都有代码洁癖,要不然业务多了都会变成屎山
    weeei
        17
    weeei  
       2022-12-27 18:01:10 +08:00   1
    团队人员不稳定的情况下,这种情况不可避免的,平一己之力重构这种事情千万别搞。不仅重构写的心力交瘁,而且所有 bug 都算你头上。
    除非你是团队 leader ,把重构作为工作的一部分分发下去,长此以往过个两三年代码结构就能慢慢变好了。
    squarefong17
        18
    squarefong17  
       2022-12-27 18:30:06 +08:00
    @unco020511 有一个能跑就行
    yuruizhe
        19
    yuruizhe  
       2022-12-27 18:34:34 +08:00 via iPhone
    国内知名软件? say your name
    ChrisFreeMan
        20
    ChrisFreeMan  
       2022-12-27 19:29:30 +08:00
    @yuruizhe 都说了知名了,那就是知乎了
    lzgshsj
        21
    lzgshsj  
       2022-12-27 19:34:32 +08:00
    厌恶屎山->理解屎山->成为屎山:)
    wingkwanli888
        22
    wingkwanli888  
       2022-12-27 20:17:01 +08:00 via iPhone
    @ChrisFreeMan 知乎也就一网页,谈不上软件
    zhuangzhuang1988
        23
    zhuangzhuang1988  
       2022-12-27 21:02:21 +08:00
    啥知名软件啊
    WilliamYang
        24
    WilliamYang  
       2022-12-27 21:23:39 +08:00
    哪个知名软件,给个颜色提示
    dddd1919
        25
    dddd1919  
       2022-12-27 21:33:30 +08:00
    《山堆》
    《上雕花》
    wu67
        26
    wu67  
       2022-12-27 21:38:40 +08:00   3
    除非持续重构, 不然代码只会成为屎山, 谁也逃不掉.
    所以软件开发行业, 是最需要人力资源冗余的, 不然光是写业务代码就消耗光了精力, 那不可能写的出好代码, 只能说是能跑.
    讲真, 半年写出来的垃圾, 你后续可能花一年都不一定能给他重构回来, 期间还会间杂着新业务开发, 只会越来越难. 我最近新入职的公司项目也是这样, 单文件代码量巨多、代码逻辑毫无设计、各种多余的中间变量、各种监听和计算, 页面填个表单, 我的 mbp 瞬间能升温到 59 度...代码写起来也是很难受, 现在就是一点点的重构改写, 抹平之前的技术负债
    chihiro2014
        27
    chihiro2014  
       2022-12-27 21:39:47 +08:00
    1. 看不惯就重构他
    2. 打不过就加入
    18500592934
        28
    18500592934  
       2022-12-27 21:55:15 +08:00
    @eason1874 如果屎山依然在产生效益,而且还很可观,且出现线上问题可以很快的得到响应和解决,你就没发推动重构。只有造成了实际损失或领导层意识到随时可能造成重大损失的时候,你才有可能有机会重构(此时你得到的资源依然不够多,但也算是迈出了一大步)。
    coolair
        29
    coolair  
       2022-12-27 22:01:10 +08:00   1
    你还是太年轻,这种工作是最好做的。
    别人代码写的好,你才有心理负担,怕自己写烂了,挨领导批。
    这种烂代码,堆屎山简直不要太轻松,有问题解决问题,工作很好量化。

    要是重构或者重零开发新项目,那就累了,要是领导管的严,你既要代码写的好,又要按时达成里程碑。
    opentrade
        30
    opentrade  
       2022-12-27 22:19:13 +08:00
    送江总书记的名言给你
    zsj1029
        31
    zsj1029  
       2022-12-27 22:22:11 +08:00 via iPhone
    缩减三字 忍 or gun
    sloknyyz
        32
    sloknyyz  
       2022-12-27 23:13:43 +08:00
    拉屎是最简单的,只需要找准坑位即可。
    djoiwhud
        33
    djoiwhud  
       2022-12-27 23:45:07 +08:00 via Android   1
    雍正:四字格言“戒急用忍”。我靠这个扳倒了你八叔九叔十叔。
    smj
        34
    smj  
       2022-12-28 02:09:08 +08:00   1
    程序员在中国是什么成分的工种不会不知道吧?
    MrHyde
        35
    MrHyde  
       2022-12-28 02:23:18 +08:00
    国内知名,难道是 PingCap 的 TiDB ?

    或者是金山?
    HeapOverflow
        36
    HeapOverflow  
       2022-12-28 05:10:22 +08:00
    盲猜小红书
    Edward4074
        37
    Edward4074  
       2022-12-28 05:52:24 +08:00 via iPhone
    代码洁癖患者,某三线城市(一线房价)小公司,新项目做低代码平台。我去年底才转到该项目,不夸张的说,今年几乎是凭一己之力把一个屎山项目逐步重构到目前还不错的状态。不过由于项目还没正式上线,重构比较没有负担,项目中仍有不少屎一般的代码,不是核心代码的我会选择性忽略。
    hellojukay
        38
    hellojukay  
       2022-12-28 09:30:19 +08:00
    别重构,跟着一起慢慢加功能
    JDog
        39
    JDog  
       2022-12-28 09:39:34 +08:00   5
    “新人和老人的区别就是面对一坨屎山,新人会大吃一斤。老人会贤淑的避开最臭的那部分屎,然后灵巧的在保证屎山不垮的情况下把自己的屎再拉一层上去”
    pansongya
        40
    pansongya  
       2022-12-28 09:42:53 +08:00
    那不是叫 屎山 那叫历史遗留问题 你看看 QQ 空间的代码
    sorryfu
        41
    sorryfu  
       2022-12-28 09:46:23 +08:00
    我入职的一两月的时候看项目代码,也是你这种想法,觉得怎么都是屎啊,这些工作四五年的写代码不过如此嘛,后面想通了,成为屎山是必然的趋势,因为产品经理不断加新功能,不断加新功能,排期紧,根本就没有时间去重构,后面我也就随便了,屎山就屎山吧,我也只能尽量不让自己写的代码变成屎,前面写的屎山那就没办法了,所以放宽心吧,屎山是必然的。解决方法是,你可以在这些屎山上加一些注释什么的,至少让它看起来不那么难闻一些,也只能这样了。
    QKgf555H87Fp0cth
        42
    QKgf555H87Fp0cth  
       2022-12-28 09:58:23 +08:00
    上单元测试
    FreshOldMan
        43
    FreshOldMan  
       2022-12-28 10:06:22 +08:00
    屎上雕花
    unco020511
        44
    unco020511  
    OP
       2022-12-28 10:32:16 +08:00
    @aaronlam #9 对标巨硬
    www5070504
        45
    www5070504  
       2022-12-28 10:41:03 +08:00
    大家都是屎上雕花 毕竟改了还要担责
    KleinP
        46
    KleinP  
       2022-12-28 10:45:45 +08:00
    我重构了我们研发部门的代码,写了一个还不错的框架,然后我们领导看着还不错,就把所有的工具都迁移过来了,屎山真实忍不了
    gdgoldlion
        47
    gdgoldlion  
       2022-12-28 10:58:21 +08:00
    https://zhuanlan.zhihu.com/p/66547153

    如果是临时维护,那就把相关注意事项写到小本本上,不要在代码里加注释,不要重构,能飞线就飞线,改的越多事越多

    如果是长期维护,重构是必须的
    ukyoo
        48
    ukyoo  
       2022-12-28 11:01:29 +08:00
    我们的 APP 月活过亿, 也是一坨屎, 大量没注释的或者英文注释的代码, 一个类动辄一两万行, 各种 bug. 没有代码 review, 随便什么代码都可以往上垒
    easonl
        49
    easonl  
       2022-12-28 11:02:25 +08:00
    等两年以后,有新的小鲜肉进来公司看到你的代码,也会觉得臭不可闻的,又如何呢?又不是不能用。
    tysb777
        50
    tysb777  
       2022-12-28 11:05:08 +08:00
    WPS 吗
    dobelee
        51
    dobelee  
       2022-12-28 11:10:42 +08:00
    给屎山添油加醋。
    youngcong
        52
    youngcong  
       2022-12-28 11:14:10 +08:00
    不断加业务是导致屎山堆积的一个原因。但有时候真的单纯是因为前人写的代码就是一坨屎,与业务无关。
    kelvin_fly
        53
    kelvin_fly  
       2022-12-28 11:21:06 +08:00
    开闭原则~ 微服务~ 尽量不触碰旧的代码内部
    RockShake
        54
    RockShake  
       2022-12-28 11:32:29 +08:00
    WPS 或者是永中?
    liuidetmks
        55
    liuidetmks  
       2022-12-28 12:08:36 +08:00
    这种一半是不断的迭代,需求的变化超出程序员预想,新需求甚至和前面所有需求是矛盾的。而且是那种一周上线的
    xylxAdai
        56
    xylxAdai  
       2022-12-28 13:52:50 +08:00
    屎山代码最好改了。拉就完了。
    lanbatian
        57
    lanbatian  
       2022-12-28 14:01:53 +08:00
    你和代码有一个能跑就行
    tkHello
        58
    tkHello  
       2022-12-28 14:12:48 +08:00
    无所谓,我不会出手
    loryyang
        59
    loryyang  
       2022-12-28 14:21:09 +08:00
    现在我就在重构中,自己亲手做起来的项目,努力保鲜中,能做一点是一点
    zhchyu999
        60
    zhchyu999  
       2022-12-28 14:26:50 +08:00
    忍一忍吧,吃透就好,也干不了几年
    marvincible
        61
    marvincible  
       2022-12-28 14:28:33 +08:00
    重构也有问题,历史的项目没有完整的测试用例,你重构完测试都不知道咋测
    zhw2590582
        62
    zhw2590582  
       2022-12-28 14:30:11 +08:00
    WPS 吧
    jameszhangqk1
        63
    jameszhangqk1  
       2022-12-28 14:32:11 +08:00
    你看别人代码是屎山,等你重构完了,别人看你的代码也是屎山。每个 coder 都认为自己的屎山是最香的。
    THESDZ
        64
    THESDZ  
       2022-12-28 14:43:25 +08:00
    按业务水平切分,不要想着垂直切分,或者垂直的层只用标准库或者开源依赖。。。
    adgad2
        65
    adgad2  
       2022-12-28 14:49:33 +08:00
    也想好好写,迫于工期和多变的需求。。。

    我选择在屎山上继续拉屎
    la2la
        66
    la2la  
       2022-12-28 14:54:39 +08:00
    无所谓,你会出手
    timeflies2020
        67
    timeflies2020  
       2022-12-28 15:10:21 +08:00
    重构不了就加入他们

    感觉很多辣鸡代码,30%的原因是程序员辣鸡,70%的原因是迭代节奏太乱太快
    qzhai
        68
    qzhai  
       2022-12-29 11:24:48 +08:00 via iPhone
    真的能跑就行,写程序不是为了代码不屎的,只为了解决用户需求。来源的代码非常规范,思路清晰,是因为这也是用户需求的一部分。
    zhangtest
        69
    zhangtest  
       2022-12-29 14:35:24 +08:00
    有没有可能是你自身有问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     892 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:15 PVG 06:15 LAX 15:15 JFK 18:15
    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