V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
javaWeber
V2EX  ›  程序员

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

  •  
  •   javaWeber · Oct 11, 2019 · 2857 views
    This topic created in 2392 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

    18 replies    2019-10-12 17:07:01 +08:00
    SmiteChow
        1
    SmiteChow  
       Oct 11, 2019
    ut 覆盖下重构

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

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

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