那些坑爹的老代码,究竟改还是不改?!
在软件研发中,我们总会遭遇一个场景,就是要去改变或添加一项功能到既不是咱们创建、也不熟悉、更与自己负责的系统部分无关的代码中时,会遇到麻烦,而此时的内心更是崩溃的。
那么,面对前任程序员留下的代码,究竟要不要改?改写老代码,究竟如何才能不留坑?
曾刊载于《程序员》的《神秘的程序员们》漫画一则
长久以来,业界流传着一个约定俗成的禁忌:如果你恨一个程序员,就让他去维护年久失修的老代码吧!提到老代码,相信所有程序员都有话要说。
或许每位程序员都有一颗封疆扩土的雄心,所以入职后面对着冗余复杂的陈旧代码,很希望将一切推翻重来。毕竟代码结构 Bug、运行缓慢乃至于过于挑战审美等问题,很容易让人抓狂。但是对一家软件企业来说,老代码就是资产的象征,是多年积累下来的核心和重要竞争力。
对于软件产品,先后几波人维护过代码是很常有的事儿。如果你重写的新技术、新语言或者新框架并不能给产品带来质的飞跃,技术领导者又为什么要同意重写项目代码?更遑论维护过程中资金链断裂、核心程序员离职等突发情况的存在。
基于以上的思考,对于老代码我们究竟动还是不动?业内有赞同也有反对的声音:
@mostone:
动当然可以动,但一般一个项目的代码都比较庞大,如果耦合度较高,修改的风险必然很大。
@u013553804:
大刀阔斧,全部推倒重来,当无可奈何的时候。
@u012377333:
老代码能不能动,就看老代码写的怎么样了,比如一些开源框架,里面的很多基础的代码都不需要动或者只是简单的添加和新的业务逻辑相关的代码。如果老代码没有基于编码规范进行,里面势必就埋了很多雷,谁踩谁死。这里就涉及到一个问题,每一次代码合并必须要进行代码review,让该项目的所有开发人员对代码达成一致意见后,这样的老代码才能愈久弥坚。
@chinglish:
革命的时机未到你就去革命最终会革了自己的命;革命时机到了你再去革命那才真的是承天应人破而后立。
@dreaper126:
脱离业务需求,脱离上层的支持,脱离一个宽裕的时间段,切忌不要拆雷,成了没一毛钱好处,败了你就成千古罪人。
@汪海洋的博客:
变量命名没点数,有时写着还手误;界面全靠神奇数,保准看到就发怵;私有公有混一处,代理委托亦糊涂;消息通知满天飞,委托方法一大堆;第三方库无出处,随手改动无备注;单个对象多职责,悲伤逆向流成河;产品突增新功能,一行代码变大神;来了任务有委托,多写一行都嫌多。
对于老代码你有什么样的观点?欢迎各抒己见,在留言区分享你和老代码的爱恨纠缠。
那些坑爹的老代码,究竟改还是不改?!相关推荐
- 十年的老代码,你敢动?
程序视界 微信号 programmer_sight 功能介绍 聚焦职场生活.职业选择.适应.发展.转型.技能Get,有料,有趣,有能量. 你入职一家新单位,被告知需要维护一个老产品,经理找质管给你开通 ...
- 崩溃!如何面对令人脱发的老代码?
点击关注公众号,实用技术文章及时了解 办公室里,老T戴上耳机播放一曲浪漫旋律,写出的代码散发出一股诗般的文艺气息.每一次从容不迫的敲下回车,枯燥无味的程序逻辑突然变得有血有肉,运行时的每个字节仿佛都会 ...
- 朱晔的互联网架构实践心得S2E1:业务代码究竟难不难写? | 掘金年度征文
注意,这是我的架构实践心得的第二季的系列文章,第一季有10篇你也可以回顾. 最近我一直在思考几个问题: 业务代码究竟难不难写? 一直开发业务代码是不是完全学不到东西? 5年+开发经验的老程序员的价值在 ...
- 六代单传的老代码,到底能不能动
六代单传的老代码,到底能不能动 原2017.07.26程序人生 你入职一家新单位,被告知需要维护一个老产品,经理找质管给你开通了SVN权限,告诉你迁出哪个分支,然后告诉你说,就在这个分支上改,添加一个 ...
- matlab代码重改python代码,对应函数
(2021)matlab代码重改python代码,对应函数--全!_Troublemaker丶的博客-CSDN博客
- 【深度学习】PyTorch 历史版本安装-祖传老代码运行刚需
最新 PyTorch 安装 以及 CUDA 版本 如果要安装最新的 PyTorch 其实是很简单的,直接到官网首页就有各种系统的安装方法,如同所示: 这里有一个是 CUDA 版本,实测需要一模一样,这 ...
- 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方案
[rabbitmq]Queueingconsumer被废止后老代码如何做的解决方案 参考文章: (1)[rabbitmq]Queueingconsumer被废止后老代码如何做的解决方案 (2)http ...
- 偿还技术债 - 通过重构拯救老代码
偿还技术债 - 通过重构拯救老代码 尝试去接管一个陈旧的代码库使他成为达成一个可控的状态?这几年的大型的旧web应用程序开发给了我们如下这些建议. 通过重构去拯救旧代码 松鼠会因为忘记自己把松果放在那 ...
- pytorch的代码 CPU改为GPU
pytorch的代码 CPU改为GPU 找一下几个地方改动 网络模型 数据(输入.标记) 损失函数 cuda() 一.网络模型 mymodule = MyModule() mymodule = mym ...
最新文章
- 鹅厂分享:AB实验只是开始?如何归因和解读才是王道!
- WebP 在减少图片体积和流量上的效果如何?—— WebP 技术实践分享
- python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)
- java 序列化声明_显式声明默认Java类序列化方法的原因是什么?
- 天津科技大学计算机基础,天津科技大学大学计算机基础样卷
- dubbo分布式系统链路追踪_zipkin
- Django处理ajax请求
- 华为新系统鸿蒙效果,19款华为手机内测新系统,流畅度比肩苹果iOS,优先体验鸿蒙OS...
- JRuby--Java和Ruby的强强联合 Centos7.X
- 【Ubuntu】如何使用命令行(优雅地)安装/卸载Microsoft Edge
- H.323-SIP信令网关
- java date the type is ambiguous,The type File is ambiguous,该如何解决
- 《失业的程序员》(十二):潜意识的智商
- 一寸照片快照多少钱_去照相馆拍照一般多少钱
- [计算机毕业设计]元学习方法的小样本图像分类算法
- 阻抗匹配基础知识详解
- 为什么 128 KB 的魂斗罗可以实现那么长的剧情?
- 网络工程师面试题(面试必看)(4)
- 所有的事情都会趋于平淡
- matlab simulink 除法,第03讲 MATLAB-simulink的数值运算.ppt
热门文章
- 中国摊铺机(车辆)市场趋势报告、技术动态创新及市场预测
- 中国天花板供电装置行业市场供需与战略研究报告
- 中国双面柔性印刷电路板(FPC)市场趋势报告、技术动态创新及市场预测
- 中国可打印标签市场趋势报告、技术动态创新及市场预测
- 如何做一个MySQL优良数据库_MySQL数据库如何做好优化
- 3风扇声音怎么调小_美的风扇价格表
- [vscode] markdown_index----可以为你的markdown标题添加序号的插件
- C与C++关于*与的传参解析
- 爱数智慧荣获“阿里云2021年度优秀供应商” | 喜讯
- Java 是如何优雅地实现接口数据校验的?