代码删除大赛 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
Livid
55.21D
443.98D
V2EX    奇思妙想

代码删除大赛

  •  
  •   Livid
    PRO
    2015-01-06 19:53:28 +08:00 7342 次点击
    这是一个创建于 3933 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果你们公司有那种 N 年历史的大型 codebase,可以考虑定期组织代码删除大赛:在不影响功能的情况下,删掉多余或者不用的代码。
    54 条回复    2015-01-24 17:01:11 +08:00
    dabaii
        1
    dabaii  
       2015-01-06 20:00:06 +08:00
    然后半年后发现,某个秘密角落的功能已经bug了 半年。
    liul85
        2
    liul85  
       2015-01-06 20:02:41 +08:00
    @dabaii 同感 哈哈
    402645707
        3
    402645707  
       2015-01-06 20:03:36 +08:00   1
    感觉是一场阴谋,像是在让程序员故意写出难维护的代码
    luoweihua7sync
        4
    luoweihua7sync  
       2015-01-06 20:07:12 +08:00   5
    试过了,删完没2周,到处冒烟。。。
    Livid
        5
    Livid  
    MOD
    OP
    PRO
       2015-01-06 20:10:34 +08:00 via Android
    嗯,要靠谱实施的话,先让每个人去删自己写的。如果是删别人的,确实有可能会冒烟。
    moonkiller
        6
    moonkiller  
       2015-01-06 20:22:36 +08:00
    你昵称旁边的mod啥意思哈?
    @Livid
    lsylsy2
        7
    lsylsy2  
       2015-01-06 20:24:16 +08:00
    @moonkiller 网站管理员
    yellowV2ex
        8
    yellowV2ex  
       2015-01-06 20:26:26 +08:00
    于是有人把空格和回车都删了
    cattail
        9
    cattail  
       2015-01-06 20:29:48 +08:00
    @Livid 自己的代码也依赖别人的代码, 根本就没有自己的代码一说
    xcatliu
        10
    xcatliu  
       2015-01-06 20:40:52 +08:00
    @cattail 别人的代码也依赖了自己的代码,删了后火灾了
    ls25145
        11
    ls25145  
       2015-01-06 20:54:28 +08:00
    现在公司产品里的垃圾代码一大堆,经常出诡异的bug,还有memory leak。
    花了大量工数改bug,就是不肯花时间整理代码。
    更恶心的是,代码结构好了,别人看不见,没功劳。但是改出问题来了,全是个人责任,大过!
    哪里来的动力啊!体制太垃圾了
    clowwindy
        12
    clowwindy  
       2015-01-06 22:02:58 +08:00
    每次 code review 看着一堆红色的删掉的行就高兴。
    paloalto
        13
    paloalto  
       2015-01-06 22:32:19 +08:00
    豌豆荚每隔几个月就有一个 polish week。
    cvrock
        14
    cvrock  
       2015-01-06 22:34:50 +08:00   2
    说实话,别人的代码真心不敢删,谁知道原作者对这个函数有什么假设?
    例如函数A看起来不需要做某件奇葩的无关操作,但其实A调用了B,B调用了C,C却依赖A的这个操作,我真心见过,而且依赖关系更复杂,更可怕的删了之后对于普遍情况没影响,但遇到某些特例时……
    Mutoo
        15
    Mutoo  
       2015-01-06 22:38:07 +08:00
    没做测试驱动的话,有多少人有信心改
    spacewander
        16
    spacewander  
       2015-01-06 22:40:44 +08:00   2
    一场紧张刺激的大赛结束后,程序猿们周末加班加点处理新出现的大量的bug。
    Cee
        17
    Cee  
       2015-01-06 22:41:21 +08:00
    注意不错!
    Cee
        18
    Cee  
       2015-01-06 22:41:32 +08:00
    @Cee 唔 主意..
    nicai000
        19
    nicai000  
      &nbs;2015-01-06 22:44:14 +08:00
    If it ain't broke, don't fix it...
    cattail
        20
    cattail  
       2015-01-06 22:57:32 +08:00 via iPhone
    @Mutoo 测试是正解
    rannnn
        21
    rannnn  
       2015-01-06 23:24:49 +08:00   1
    我以前一个公司好几个10万行一个文件的代码。生成的code + 十几年的不停加东西。没人愿意去重构,这玩意谁碰谁倒霉。
    Showfom
        22
    Showfom  
    PRO
       2015-01-06 23:25:51 +08:00 via iPhone
    别删除注释哈哈
    lsmgeb89
        23
    lsmgeb89  
       2015-01-06 23:30:53 +08:00
    @rannnn 打开眼界,10w 行。
    kxxoling
        24
    kxxoling  
       2015-01-06 23:39:25 +08:00 via iPad
    @yellowV2ex Pythoner表示做不到啊!
    KentY
        25
    KentY  
       2015-01-07 00:36:40 +08:00
    5年来一直开发, 冗余代码很多, 但是谁也不敢动

    kent$ (master|…) git gll|head -1
    * 13b2fb6 Merge branch 'master' of ssh://... (47 minutes ago by Kai ****) (HEAD, origin/master, origin/HEAD, master)

    kent$ (master|…) git gll|tail -1
    * 781a979 New remote folder for project. (5 years ago by Stephan ****)
    branchzero
        26
    branchzero  
       2015-01-07 03:04:36 +08:00
    怕删了之后留下暗坑,不敢乱动,而且写东西的时候没留单元测试= =
    ybh37
        27
    ybh37  
       2015-01-07 08:14:28 +08:00
    这个有点刺激~
    knightluffy
        28
    knightluffy  
       2015-01-07 08:54:57 +08:00
    删个毛线啊,js代码混淆一下基本就是免删的剧情了。。
    wdlth
        29
    wdlth  
       2015-01-07 09:11:48 +08:00
    比如osName.startsWith("Windows 9")?
    yinheli
        30
    yinheli  
       2015-01-07 09:29:17 +08:00
    @moonkiller 是 Moderator 的缩写
    kaizixyz
        31
    kaizixyz  
       2015-01-07 09:32:34 +08:00
    想起一句话:技术不是一种优势~是一种债务。
    sieon
        32
    sieon  
       2015-01-07 09:41:42 +08:00
    专门组织,我觉得组织之前考虑清楚应对方法吧。应该没问题。
    msg7086
        33
    msg7086  
       2015-01-07 11:42:16 +08:00 via iPhone
    测试驱动开发不已经是标配了么
    iamshaynez
        34
    iamshaynez  
       2015-01-07 12:56:08 +08:00
    重构和代码删除本身都不会产生显性价值但带来风险,在任何一个公司都不会有人愿意冒险做这种事情。只要是存活超过3年的公司,宁愿立项目来做重构的新版本,也不会愿意花成本对已有的(别人的)遗产动手脚。
    Elethom
        35
    Elethom  
       2015-01-07 13:15:04 +08:00
    直到入第三天 contributions 中的色才高色...
    sitin
        36
    sitin  
       2015-01-07 13:15:49 +08:00
    我觉得还是测试覆盖要到位啊,才能大胆做删除啊,不然真心不敢乱删。
    fising
        37
    fising  
       2015-01-07 13:18:37 +08:00   1
    MOD Moderator

    @moonkiller 版主,管理员
    moonkiller
        38
    moonkiller  
       2015-01-07 13:35:01 +08:00
    @fising
    @yinheli 其实我是来秀头像的。。。
    yuexiafeng510
        39
    yuexiafeng510  
       2015-01-07 14:54:53 +08:00
    在一个根本没有代码规范可言的公司 这无疑是 自 寻 死 路 。。
    yuexiafeng510
        40
    yuexiafeng510  
       2015-01-07 14:56:49 +08:00
    @rannnn 感同身受 目前就在维护一个这样的老不死的项目 比我年龄都大
    lizheming
        41
    lizheming  
       2015-01-07 15:10:27 +08:00   1
    写完代码几个月之后准备重构我的代码,一下是场景:
    "这几行代码好像没干啥啊,我当时为啥要写啊?"
    ....
    "算了想不太起来了,好像真的没有啥用,删掉吧"
    ....
    "卧槽,有BUG诶,快修修修!"
    ...(拼命补bug中)
    "总算搞定了!诶?!等一下!原来之前的代码是干这个的啊!"

    很多时候都会处于以上这种作死的情况..2333
    nowcoder
        42
    nowcoder  
       2015-01-07 15:20:02 +08:00
    一定会出问题! 我们的原则是千万不要动那些鬼代码。。
    daodao
        43
    daodao  
       2015-01-07 15:24:14 +08:00
    这事情 好像真是谁碰谁倒霉,吃力不讨好。
    除非大老板自上而下主导,否则一般人都没这个魄力啊。

    之前我们这边一个程序员自己不满意自己过去两年写的代码,自己重构了自己相当多一部分的代码,结果后来用户反馈影响很大,程序员被问责还扣了好几天工资...
    jeeve
        44
    jeeve  
       2015-01-07 15:36:40 +08:00
    大公司没人愿意弄这个事情,费力不讨好,关键是会留下很多隐患


    one man 无所谓,搞搞蛮好的
    oldcai
        45
    oldcai  
    PRO
       2015-01-07 15:41:22 +08:00
    你头像旁边的小红点啥意思哈?
    @fising
    thanksir
        46
    thanksir  
       2015-01-07 16:08:26 +08:00
    虽说删代码很牛逼,但通常删了都是后来的坑
    ming7435
        47
    ming7435  
       2015-01-07 16:29:28 +08:00   1
    没有经历过大赛,但干过类似的事情,11年接手一个代码总行数超过100W行的项目,到现在还一直加功能的情况下,代码总行数已经变为50W行不到。我只想说,删代码带来的快感无与伦比。
    jackyliudm
        48
    jackyliudm  
       2015-01-07 17:25:11 +08:00
    前段时间我还专门列了个"代码可维护"计划, 希望能推进解决类似的问题.

    不过一般都不敢动代码. 问题是: 连代码都不敢动,怎么升职加薪迎娶白富美改变世界造福全人类?
    jackyliudm
        49
    jackyliudm  
       2015-01-07 17:25:57 +08:00
    @ming7435 大拇指!
    geew
        50
    geew  
       2015-01-07 18:06:33 +08:00
    只想说 测试估计要累死.....
    loryyang
        51
    loryyang  
       2015-01-07 18:24:40 +08:00
    主要问题还是:没有回归测试

    如果有单测+QA自动化回归测试的保证,可以考虑一删。不过呢,好多人还是不愿意,原因是没啥个人好处。。。
    hitsmaxft
        52
    hitsmaxft  
       2015-01-08 10:26:13 +08:00
    我们刚把整个php应用用java重写了。
    整个过程需要大量的qa资源投入做资源对比。

    不过嘛,写出屎一样代码的人,是没这个悟性整理代码的,用这种比赛把问题暴露出来并勒令整改倒是个好主意
    rannnn
        53
    rannnn  
       2015-01-08 22:38:20 +08:00
    @yuexiafeng510 我去年5月离职了
    FradSer
        54
    FradSer  
       2015-01-24 17:01:11 +08:00
    @ming7435 想起来就爽
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4077 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 10:15 PVG 18:15 LAX 03:15 JFK 06:15
    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