六代单传的老代码,到底能不能动

2017.07.26程序人生

你入职一家新单位,被告知需要维护一个老产品,经理找质管给你开通了SVN权限,告诉你迁出哪个分支,然后告诉你说,就在这个分支上改,添加一个新接口,以便支持H5 Video。

于是你开始看代码,云山雾罩,各种痛苦,完全搞不懂业务逻辑和代码的关系,也闹不明白这块代码为什么这么写那块代码是几个意思。你去问进来5个多月还没转正的老同事,他告诉你他也不懂,让你凑合着加个新接口实现了功能就行。加了新功能就行。

你去问干了快一年的资格更老的同事,他叮嘱你千万别动里面的代码,千万别管里面什么样,就在外面包一层,先交付新功能,其它的有时间再说,里面的逻辑十年没人动过了,没有一个人能说清楚怎么回事,你要是改,一不留神就遍地狼烟。

你怎么办?

正方观点:不能动——“我还有老婆和孩子”

@Mangiacapra

动完之后,会不会只剩下删库跑路这个结果了。

@李傅博

不动才10个bug,动完1000个bug。

@qqwenqqqi 


·理想的维护状态

用适配器的思维进行一点一点的重构,尽可能的熟悉业务逻辑,找出业务逻辑的缺陷,接着写文档,干擦屁股的活儿(这是在时间有限,只维护这一项产品的时候)最后这个项目就可以随意的揉捏了。

·普遍的状态

当然上面说的情况是理想状态,但是一般老板和pm有时间预算的,在这种情况下,普遍只有先从经理说的分支哪儿入手,尝试写H5 VIdeo code. 最后出来的结果有可能有BUG。只有BUG出现了从点到面去维护了,因为先让产品上线就是金钱。

·Boss希望的状态

1.如果是希望快速的开发出来走第普遍状态解决

2.如果是希望走产品质量优先走理想状态重构解决

·闲谈

从接手这个项目开始,你会发现代码不可控是多么的纠结和无奈,你在该基础上开发就很容易有BUG。所以接手这个项目的第一思维就是获取代码的控制权!从这个角度解释就会发现:代码的易读性多么的重要,要写通用的代码,写规范的代码,项目文档对交接是多么的重要。你为公司擦屁股,虽然是吃力不讨好的活儿,但这是对自己的负责,对公司的负责,对下一任程序员的负责。你不擦屁股,总有人擦屁股,优质的程序员普遍具有擦一切屁股的能力,还热衷于擦屁股。

观点评论

对一家软件企业来讲,老代码就是资产,是多年积累下来的核心资产和重要竞争力。尤其是软件产品,一份代码先后几波人维护过是常有的事。可是没人敢去动它,等最后一个熟悉一部分老代码的程序员悠然远去,此地空余叹息,从此以后,新来的程序员就成了想吃香蕉的猴子。

反方观点:文档会过时,代码不会说谎

@安晓辉,CSDN知名博主

一旦老代码没人能够把握,这些作为资产的代码实际上已经丢了,不再有价值增长,原本领先的优势随着同行们百舸争流的追赶渐渐失去。这是对企业是一种损失。读程序员其实也是一种损失。

自己不写文档却老抱怨别人的代码没文档,而碰见了有文档的代码却又往往弃文档如敝履。业界的代码和文档,少见匹配的。我们只能接受这个现实:代码即文档。

对维护老产品的程序员来讲,弄明白产品设计逻辑和代码实现逻辑是非常重要的,就只要如下两个办法:找到熟悉产品的前辈,让他给你讲讲。如果你找了产品经理,他只能告诉产品设计上如何如何。如果你找了程序员,他通常会说就是这样那样,然后说一句高深莫测又拉仇恨的话:看看代码就明白了。自己啃代码,啃代码,啃代码。

所以,也可能有在外围包装的办法,比如你封装一个本地的HTTP Server,用旧API拿到数据作为HTTP流转发一下就能支持H5 Video标签了。也可能很多情况都存在折衷的替代办法。

然而,能弄懂代码是如何实现产品和业务的,还是有非常重要的好处——对程序员来讲很重要的好处:文档是会过时的,代码是不会说谎的,读懂代码,你就真真正正明白了业务是如何实现的。对于没人敢动而又核心的老代码,你搞明白了,就占领了战略要地,唯有掌握核心业务和代码,才能彰显自己的价值。

除此之外,读代码也是非常重要的学习途径,尤其是经历过线上考验的代码,必然尤其过人之处。在阅读的过程中,我们可以学到很多东西,既可以学到业务,也可以学到设计。只要有心,处处都是成长的机会。最不济,也锻炼了阅读代码的能力,庖丁解牛之技成了,也可以在将来以无刃入有间,发挥用武之地。

你可能还想看

观点:深度学习,先跟上再说

机器学习的老炮,想把他多年的经验分享给你

百度陆奇内部最新演讲:成为优秀工程师的五个方法

全球最聪明公司排行榜TOP50,他们都是什么行业的?

128篇论文,21大领域,最值得看的资源全在这了

我面试了900多名工程师,得出了这样的结论

Stack Overflow 报告深度解析

如何用一句话噎死面试官

扫码关注CSDN程序人生

看更多有趣观点

查看原文>>
程序人生 关注
点赞|19 25100 0

声明:该内容由作者授权CSDN展示,内容版权归作者所有,如需转载请与作者联系。如有侵权,请联系admin@csdn.net删除。
我来说几句发表

p10614040
看公司对待这块的态度,一般行业软件的态度是只要好的就别动,项目经理也不会同意这种吃力不讨好的事;如果是产品还要迭代挣钱还不改就坑了,要么改要么趁早另谋出路吧
4天前 11:07
zshdd
项目过大就算了吧,就你一个去重构?
6天前 13:48
LM5463640
我们公司还真有项目是六代单传的,前面的人都被坑走了。一代一代的坑...来一批,走一批
2017-08-17 10:00
csssy003
我维护过一个09年的用PHP4.4写的项目,不光如此, 该项目还自带部分代码加密以及对接政府接口(测试接口已关闭), 谁都不敢动.维护了半年抽不开身, 别人又不愿意接这个烂摊子, 离职了. 这是我唯一一次因为钱以外的原因离职.
2017-08-14 16:31
huanfengyun
这种情况很少见的,很多产品出来没几年就死掉了,哪来的六代单传
2017-08-14 10:04
u011715883
熟悉代码的业务逻辑才能下手,不然你无从下手
2017-08-14 09:55
hypercode
优质的程序员普遍具有擦一切屁股的能力,还热衷于擦屁股。
2017-08-13 17:58
qq_35676845
为了生活往往都是妥协
2017-08-12 14:16
weixin_39451813
号好啊好啊好啊后好还啊豪华好好
2017-08-12 09:32
jdfkldjlkjdl
看懂业务代码才是王道,不懂业务之前就下手可能会死得很惨
2017-08-11 16:37
liuhannan111
文档是会过时的,代码是不会说谎的,读懂代码,你就真真正正明白了业务是如何实现的。对于没人敢动而又核心的老代码,你搞明白了,就占领了战略要地,唯有掌握核心业务和代码,才能彰显自己的价值。
2017-08-11 14:39
wzhwok
6代单传,有这么理想吗?真实的情况往往是补丁罗补丁,包了一层又一层,代码量激增,性能极差,这的项目你给我改一个看看? 基本都是推倒重来吧。
2017-08-11 12:39
llq108
自己不写文档却老抱怨别人的代码没文档,而碰见了有文档的代码却又往往弃文档如敝履。业界的代码和文档,少见匹配的。我们只能接受这个现实:代码即文档。
2017-08-10 23:26
m0_37944716
这说明我们就是猴子吗
2017-08-10 16:30

六代单传的老代码,到底能不能动相关推荐

  1. 偿还技术债 - 通过重构拯救老代码

    偿还技术债 - 通过重构拯救老代码 尝试去接管一个陈旧的代码库使他成为达成一个可控的状态?这几年的大型的旧web应用程序开发给了我们如下这些建议. 通过重构去拯救旧代码 松鼠会因为忘记自己把松果放在那 ...

  2. 十年的老代码,你敢动?

    程序视界 微信号 programmer_sight 功能介绍 聚焦职场生活.职业选择.适应.发展.转型.技能Get,有料,有趣,有能量. 你入职一家新单位,被告知需要维护一个老产品,经理找质管给你开通 ...

  3. 【深度学习】PyTorch 历史版本安装-祖传老代码运行刚需

    最新 PyTorch 安装 以及 CUDA 版本 如果要安装最新的 PyTorch 其实是很简单的,直接到官网首页就有各种系统的安装方法,如同所示: 这里有一个是 CUDA 版本,实测需要一模一样,这 ...

  4. 崩溃!如何面对令人脱发的老代码?

    点击关注公众号,实用技术文章及时了解 办公室里,老T戴上耳机播放一曲浪漫旋律,写出的代码散发出一股诗般的文艺气息.每一次从容不迫的敲下回车,枯燥无味的程序逻辑突然变得有血有肉,运行时的每个字节仿佛都会 ...

  5. 计算机考研哪个专业代码少,考研专业代码到底是什么意思

    考研专业代码到底是什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 1.考研专业前面的代码是专业代码,方便计算机和 ...

  6. 那些坑爹的老代码,究竟改还是不改?!

    在软件研发中,我们总会遭遇一个场景,就是要去改变或添加一项功能到既不是咱们创建.也不熟悉.更与自己负责的系统部分无关的代码中时,会遇到麻烦,而此时的内心更是崩溃的. 那么,面对前任程序员留下的代码,究 ...

  7. 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方案

    [rabbitmq]Queueingconsumer被废止后老代码如何做的解决方案 参考文章: (1)[rabbitmq]Queueingconsumer被废止后老代码如何做的解决方案 (2)http ...

  8. 徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的?

    徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的? 完成:第一遍 1.Java代码到底是如何运行起来的? Demo.java编写的源文件 打包成:Jar包即Demo.class 通过Jav ...

  9. 在Mnist数据上使用k折交叉验证训练,pytorch代码到底怎么写

    前言 最近学到了K折交叉验证,已经迫不及待去实验一下他的效果是不是如老师讲的一样好,特此写下本文. 本文运行环境为:sklearn.pytorch .jupyter notebook k折交叉验证介绍 ...

最新文章

  1. echarts 动态改变数据_Echarts的使用
  2. 深入理解 Session 与 Cookie
  3. 动态添加html元素
  4. ArrayList方法源码
  5. 位向量(bit vector)(算法导论第十一章11.1-2)
  6. c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
  7. css鼠标经过table文字变色,有没有可能用css实现当table被鼠标hover的时候,table列变色?...
  8. Nginx完美解决前后端分离端口号不同导致的跨域问题
  9. html中实心黑点,Word 实心黑点怎么打?
  10. 方差分析与正交试验设计(四)
  11. 3A游戏制作人员职位及部分职位要求
  12. 从写博到出书:过程全记录
  13. Git上传项目提示Push rejected: Push to origin/master was rejected解决办法
  14. 8. 数仓开发之 DIM 层
  15. 华大单片机开发板HC32L13X上手入门
  16. 【论文笔记】RETHINKING NETWORK DESIGN AND LOCAL GEOMETRY IN POINT CLOUD: A SIMPLE RESIDUAL MLP FRAMEWORK
  17. 51学习(2):vscode+ Embedded IDE开发环境搭建
  18. 【POJ 1788 --- Building a New Depot】
  19. c语言实现简单的24点游戏
  20. 【计算机网络】可靠传输

热门文章

  1. springboot+springsecurity+阿里云短信服务验证实现注册登录
  2. python123查找指定字符输入m_python基础--2 字符串
  3. 微小宝公众号排行榜_公众号榜单 | 2020·5月公众号地区排行榜重磅发布
  4. 小飞鱼通达商务平台课程 OA开发程序基础课 3月4日 PHP第一部分课程签到及作业
  5. 第一部文学理论和评论专著是谁的著作?全书分为几个部分?
  6. java动物声音模拟器_动物声音模拟器app|动物声音模拟器下载_v9.2.3_9ht安卓下载...
  7. 支付宝 网站 支付(AliPay)开发
  8. 操作系统思考 第三章 虚拟内存
  9. 【迅速解决出现蓝屏代码0X0000007b的问题】
  10. 【React-Native】集成微信官方安卓端SDK,实现微信登录、发送/分享小程序消息等功能