V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
javaWeber
V2EX  ›  程序员

要不要重写?如何重写一个老项目?

  •  
  •   javaWeber · 2019-10-11 15:36:09 +08:00 · 2326 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在折腾一个老项目,用的是 struct2,ibatis,springMvc,memcache,solr,activeMq.

    我打算整改成 springBoot,mybatis,redis,es,kafka。。

    但是我对这个项目一知半解。问了交接的人,总说让我自己看代码,也没有文档。

    有时候 memcache 莫名其秒就宕了。还有些定时任务也是看得莫名其秒,完全不知道更新了哪些表。

    关键是很多功能也还不清晰,不知道还有哪些雷。

    这个项目现在的某些接口的日查询,估计几十万吧。

    不重写,以后没法做新需求。如果重写,又可能有整改失败的风险。

    这个项目如果整改成功,我的水平应该会有很大提高。如果改不好,那肯定是要背锅的。

    要不要重写?如何重写一个老项目?有哪些坑要注意?

    18 条回复    2019-10-12 17:07:01 +08:00
    SmiteChow
        1
    SmiteChow  
       2019-10-11 17:02:09 +08:00
    ut 覆盖下重构

    1. 假设 a 模块依赖 b 模块,现在要重构 b 模块
    2. 梳理 b 模块所有对外接口,需要保留的使用 ut 覆盖,需要重构的先使用旧接口组合实现并使用 ut 覆盖
    3. 重构 b 模块,确保所有 ut 不被破坏
    coolair
        2
    coolair  
       2019-10-11 17:08:42 +08:00 via Android
    别重写
    zhao28
        3
    zhao28  
       2019-10-11 17:11:42 +08:00
    如果是希望提升技术和重新整理的话,可以私下用自己的时间,我们这边之前有一个项目,也是到了无法维护的程度,后面用私下的时间重写了,测试没有什么问题,就替换了生产的
    IMCA1024
        4
    IMCA1024  
       2019-10-11 17:24:33 +08:00
    摁个 F12 开这系统各个功能点都摁,看请求一直到 dao 层。
    看多几个大概就差不多了
    hotcool100
        5
    hotcool100  
       2019-10-11 17:29:24 +08:00
    NB 的人(比如我)是可以快速熟悉上手老项目,且能修复完善,而不是从头开始。

    给别人扫尾的工作我做的太多了,典型的一次就是.NET 同事去修改某网站,网站使用的是国外比较小众的.NET 框架,他三个月没搞定,最后我出马了,从学习掌握到开发完成前后就花了一周时间。
    Caballarii
        6
    Caballarii  
       2019-10-11 18:13:26 +08:00
    吃饱撑的
    taogen
        7
    taogen  
       2019-10-11 18:39:41 +08:00 via Android
    老有没有单元测试代码
    zjsxwc
        8
    zjsxwc  
       2019-10-11 18:53:13 +08:00 via Android
    重构不是重写
    haiyang416
        9
    haiyang416  
       2019-10-11 18:59:45 +08:00
    除非你对项目了如指掌,否则不要重构。
    不过私下重构着玩倒是无所谓,只要你的时间足够。
    ai277014717
        10
    ai277014717  
       2019-10-11 19:01:15 +08:00
    从写单元测试开始
    GuangXiN
        11
    GuangXiN  
       2019-10-11 19:09:15 +08:00
    没有测试保证就不要轻易搞大的重构
    LeeSeoung
        12
    LeeSeoung  
       2019-10-11 19:11:28 +08:00
    没有测试,重构风险很大。。如果只是想练手 可以自己玩 然后跟线上的对比
    javaWeber
        13
    javaWeber  
    OP
       2019-10-12 10:36:14 +08:00
    @hotcool100 NB 的人(比如我)是可以快速熟悉上手老项目,且能修复完善,而不是从头开始。

    给别人扫尾的工作我做的太多了,典型的一次就是.NET 同事去修改某网站,网站使用的是国外比较小众的.NET 框架,他三个月没搞定,最后我出马了,从学习掌握到开发完成前后就花了一周时间。
    ---------------------------------------------------------------------------------------------
    犀利犀利~
    javaWeber
        14
    javaWeber  
    OP
       2019-10-12 10:38:59 +08:00
    @taogen 老有没有单元测试代码
    --------------------------------------------
    没有单元测试,没有文档。。也没人讲解。我哭了。根本没法维护啊。
    javaWeber
        15
    javaWeber  
    OP
       2019-10-12 10:40:51 +08:00
    @zjsxwc 重构不是重写
    -----------------------------------------------------------------------------------------------
    我个人理解的重构是某个类、接口、代码块或者服务的重新组织提炼,这个项目已经千疮百孔了。。应该算是重写吧。
    lithium4010
        16
    lithium4010  
       2019-10-12 17:05:41 +08:00
    建议动手干起来完事儿
    大不了失败了也是老板背锅
    lithium4010
        17
    lithium4010  
       2019-10-12 17:06:25 +08:00
    具体做的时候具体问题仔细分析做好就行了
    lithium4010
        18
    lithium4010  
       2019-10-12 17:07:01 +08:00
    看你上来就全部框架换掉,不清楚收益是什么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1060 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:12 · PVG 03:12 · LAX 12:12 · JFK 15:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.