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

公司项目技术老旧,是种什么体验?

  •  4
     
  •   sagaxu · 207 天前用 Android 发布 · 11147 次点击
    这是一个创建于 207 天前的主题,其中的信息可能已经有所发展或是发生改变。
    2015 年开始的某个项目,骨架是从 2012 年那个项目抠出来的,标配的 Java 6 和 spring 3,界面是 bootstrap2 和 jquery 画的。所有模块都在一起,出来个大大的 war 包。需求不断在加在改,不是简单维护一下了事。

    同行门,你们都是怎么对付这种陈年项目的?
    第 1 条附言  ·  207 天前
    故事继续,在熟悉了整个系统之后,某一天我萌发了一个想法,何不做点技术栈的小更新?抱着试试看的想法,我先挑了最软的柿子捏,把 Java 6 干到了 Java 8,Tomcat 换到了最新版,非常顺利。在计划下一步行动前,我又把几百个编译警告都修正了,步子不能太大。

    几周后,着手从 spring3 升级到 spring4,并没有做很多改动,稳定运行了一段时间后,顺手把大段 XML 配置替换成了 spring 注解,后来又更新到 spring5。到这个阶段,我感觉已经比大部分公司新了^_^。

    然后我想改善一下打包发布,却发现 maven 太死,用 XML 写逻辑是很要命的,干脆把构建系统换成了 gradle,把构建脚本从大几百行缩短到了一百多行,功能不但没少,还多了。

    我觉得还不够,尝试引入了 Koltin,原本只是想写一两个类感受一下,谁知道一试就出事了,出大事了,整个项目都被逐步逐步的替换成了 Kotlin,半年之后,除了自动生成的代码,没有一行是 Java 写的了。

    这些变更,都是业余时间做的,并没有占用正常版本迭代时间,也没有因此引入 bug,反而整个系统更稳健和高效了。
    第 2 条附言  ·  207 天前
    之后的一段时间里,脑子里有个人不停的跟我说,重写吧,推倒重来吧。正好公司业务要求有大的调整,里应外合之下,重写已经是箭在弦上,不得不发了。

    然后很自然的做了好多更新,


    前后端完全分离,前端用 element 重写

    拆分成十来个模块,变成独立的内部服务,分而治之,部分模块改用 PHP 了

    零阻塞,完全丢掉 Tomcat 堆多线程那套做法,干脆 servlet 全丢,全面拥抱了 vertx

    DI 和配置等脏活,仍然交给了 spring,直接从 springboot 1.X 最新版起步


    最近我又抽空更新到了 springboot 2.0,计划十一之后再着手把 JRE 迁移到 Java 11,明年估计还有随 Kotlin 1.3 发布的 coroutine,都是值得试试手感的事情。


    虽然这么折腾没带来什么账面收益,我也不图这个,起码我自己后续的开发和维护更加舒适了,很多常规工作,以前要 2 周工期的,后来变成了一周,后来变成了 2-3 天,现在最多半天能搞定,我可以有更多的时间做到更好。
    第 3 条附言  ·  203 天前
    简单回复一下一些疑问

    Kotlin 和 Spring 怎么合体?
    基本姿势跟 Java 一样,比 Java 多些语法糖红利。

    Springboot 和 Vertx 怎么合体?
    Vertx 官方有 example。

    SpringMVC 能转 Vertx ?
    当然能,但异步改造并不轻松,管理后台和低负载接口,仍然可以继续用 springmvc,或者用 vertx 提供的 blocking 方法线程池。

    楼主不用做需求吗?
    当然要做,初期可能略影响进度,积累一段时间之后,重构后节省的时间大大超过重构本身的时间。渐进式重构,讲究的就是少量多餐,保持克制再克制,一次不要改太多。
    127 回复  |  直到 2018-09-27 08:57:44 +08:00
    1  2  
        101
    huhu3312   206 天前   ♥ 1
    想起自己入职第一天看了代码就向领导申请重构项目。。。。。
        102
    casztg   206 天前
    抽烟的手 微微颤抖
        103
    Alain1995   206 天前 via Android
    1999 年的项目,表示还在维护
        104
    vjnjc   206 天前
    楼主运气好啊
    或者还是实力好
        105
    laucenmi   206 天前
    工资增了没?
        106
    xiandao7997   206 天前
    @ae86 跟你一模一样,vb6 的 ide 还偶尔 crash,刚才还把 svn 从 1.6 升级到 1.9,然后不能用了,又得装回去
        107
    yjxjn   206 天前
    这算个屌啊。。。
    某世界五百强 IT 巨头公司
    公司内部系统开发:

    CVS/SSH1.0/DB2 for z/OS / MQ

    前端兼容 IE10,Firefox ESR 呵呵呵。。。。
    哥,我就问你绝望不???
        108
    yjxjn   206 天前
    @murmur 一看就是被 IBM Notes 拉进坑的。。。
        109
    yjxjn   206 天前
    @20015jjw Fortran 吧,cobol 路过,了解一下。。。。
        110
    jin2ml   206 天前
    上个世纪 90 年代的项目,jsp+servlet,业务代码全写页面里了,5000 多行的 jsp 维护的真是战战兢兢,瑟瑟发抖
        111
    mineqiqi   206 天前
    楼主牛逼,描述跟写小说一样
        112
    PDX   206 天前
    servlet 过度到 vx 居然没有大问题,老哥真稳。。
        113
    tao1991123   206 天前
    深圳航空 目前用的航空维修管理软件 Amicos 2003 年左右部署的 用一个搜不到名字的语言写的 Prolifics
    然后好不容决定翻写出来,结果刚起步就落后,选用 PowerBuilder。然而这个项目挂了。
    于是现在继续用旧版本。
        114
    hehe520347   206 天前
    九几年的日本项目 vc++6.0 的,够老不。一个类里一万多行的逻辑,不调查几天都不敢改的节奏。
        115
    grewer   206 天前
    @yjxjn ie10 有什么好抱怨的, 他都支持 es6 了
        116
    grewer   206 天前
    @grewer 说错了 应该是 es5 和 h5 都已经是完美支持了
        117
    specita   206 天前
    做了我一直想干又不敢干的事....
        118
    colincat   206 天前 via iPhone
    @mandy0119 游戏后台一般能用就行,真忍不了
        119
    marktown   206 天前
    去年接手公司的老项目 SSH 的,ant 编译管理,struts 框架版本太老了,被攻击了,硬着头皮把项目改成 maven 构建,把 struts 升级到最新版本,完全运行到现在,但是确实有些东西老了,不重构估计是动不了了
        120
    Mrbird   206 天前
    如果是真的,那你是相当厉害了
        121
    orm   205 天前
    标题很知乎
        122
    hrong   205 天前 via Android
    没看懂项目最终形态用了哪些技术栈。。。懂的大哥来说说。kotlin 和 spring 怎么混在一起的。。。。
        123
    PythonAnswer   205 天前
    是的,规范化日常工作组件,可以提高效率。我现在手头一堆 excel,也组件化了,溜的飞起。
        124
    mandy0119   205 天前
    @colincat 不是那种管理平台。是整个 H5 游戏的后端。简直了。10 年以前的老技术。代码注释少,可读性极差
        125
    zhangdawei   205 天前
    cvs
        126
    salamanderMH   205 天前
    佩服三连
        127
    Jiangyf   147 天前
    666
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2192 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 15:33 · PVG 23:33 · LAX 07:33 · JFK 10:33
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1