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

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

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

代码删除大赛

  •  
  •   Livid · 2015-01-06 19:53:28 +08:00 · 6929 次点击
    这是一个创建于 3607 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果你们公司有那种 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
       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  
       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  
       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  
       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   ·   实用小工具   ·   5187 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:14 · PVG 17:14 · LAX 01:14 · JFK 04:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.