暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何看待"祖传代码"?"祖传代码"是[屎山]?

356

背景:

最近这一年接手了一个非常有历史的代码,其实在工作的这么几年里,只有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,在大数据领域有多年实践经验,喜欢在工作之余写一些文章总结。

文章转载自诸葛子房的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论