背景:
最近这一年接手了一个非常有历史的代码,其实在工作的这么几年里,只有70%左右的项目是自己从0到1进行开发,其中手上有不少项目都是同事或者其他一些人交接过来的,只是有的代码质量更好,有的代码质量就堪忧了。
其实之前工作过程中也接手过一些代码,包括:优化后的代码和没有优化的代码。
总体来说,进行了优化和重构的代码质量明显是要高于没有优化的代码的。
对于"祖传代码",我们怎么办?
祖传代码够流传下来说明这个代码,这个项目能给公司带来价值,说白了对于公司来说比较重要,而如果你接手了这个项目,也在短时间内很难被辞退掉,说白了就是你掌握了公司的核心项目。
我看了下这个祖传代码最早的文档可以追溯到2013年,再之前还有没有文档就不知道了(文档是公司CTO写的,他写的时候应该还不是CTO)。可见这个代码已经运行了接近10年,而且还在运行,据业务反馈该项目能给公司带来接近一个亿的营收每年,而且继续可带来营收。
对于这种代码,我们能做一些什么呢?
(1)首先看看之前的文档,了解下项目背景以及认识下相关上下游人员,避免后续找不到人出了问题(如果有的话),一般这种代码都是上一个同事交接给你的,其次可以问问交接的同事
(2)了解完业务流程之后保障项目能正常运转,不出问题
(3)如果实在出问题了,就需要结合(1),然后自己去看看代码,到底是哪里出了问题(如果代码可读的话,函数命名、变量命名规范,可能会节省很多时间)
(4)至于代码是否要优化和重构,这个确实要看实际情况,如果有时间或者领导愿意支持你去做,那可以尝试小范围迭代,但是大概率是不会有时间去进行重构的。最好的办法也就是只能在项目上缝缝补补
(5)将代码做到自动化部署和规范上线,同时完善相应的监控,能够做到自动化运维和部署,减少后续运维工作
整体项目技术栈也是比较偏老的:
前端:jsp
后端:spring mvc
数据处理流程:Mapreduce+Hive SQL(通过shell 进行执行job)
也不是所有项目都是这种技术栈,如果是新项目,大概率就是spring boot、Vue、Spark之类的,所以这个其实看项目是否有优化过,对于这种祖传代码,建议还是不要过度优化,毕竟还有别的活儿要干。
10年的老代码

3年的老代码

至于 "祖传代码"是[屎山]?
第一个代码确实很难受,变量命名不规范,然后直接读文件,要是文件路径变了怎么办呢?
第二段代码可读性就很强了,根据函数名就能知道每个函数是干什么的
你好,我是诸葛子房,前京东、BAT 程序员,Apache Griffin Contributor,在大数据领域有多年实践经验,喜欢在工作之余写一些文章总结。





