程序猿的终极噩梦,祖传代码,一动,修半年

Simulink 导入运行自定义的C文件 如何将手写好的C文件导入Simulink中进行仿真和生成联合代码 阅读详情

“祖传代码,轻则伤筋动骨,重则一命呜呼”

程序猿的终极噩梦应该是祖传代码了吧。

很多码农小萌新们,都经历过这样的时刻吧。矜矜业业检查前人代码时,发现了明显到觉得智障的漏洞,认真的你准备大刀阔斧地修改,但你的老司机同事可能会劝你最好不要动,并露出意味深长的表情。

因为他们知道,你遇到了祖传代码。

什么是祖传代码?

祖传代码(legacy code),就字面意思而言,就是老程序猿留下“宝藏”代码。可能当初写代码的人早就离开了,但代码逻辑混乱又无注释,后人完全看不出来写的是个啥!

要么就是前人写下的时候就不完美,历经许久,业务需求也变了,随便一动就到处是问题。

比如,你可能会遇到这样的代码:

//add by xxxx 201x-x-x:

这是一段神奇的代码。。反正这么写就对了。

几乎每家公司的代码都有“历史遗留问题”,而越是大公司,情况越严重。

亚马逊的工程师形容他们的代码:“一座很大的屎山,你见过的最大的山,每次你想修正一个bug,都得爬到屎山的正中心去”。

最最可怕的是,有些祖传代码,你一动, 就再也回不去了。

用这张图再形象不过了👇
在这里插入图片描述

驾驭屎山的唯一方法,不是重构,而是不重构。

为什么有人可以在屎山里加功能?

很简单:
把屎山扒拉开,每块闻一闻,找出和你要改的功能对应的那坨屎,把这坨屎包起来

(封装),你就可以假装它不是屎,是巧克力。然后,在旁边拉一泡新的屎,等它风干成型

(测试通过)就可以收工了。

当然,怎样优雅地在一座屎山里闪转腾挪,做到“百屎丛中过,片屎不沾身”,还是需要很多经验

和技巧的。不过说白了,就算失误了摔个嘴啃屎,臭也只臭你程序员一个,老板还觉得你很努

力,客户还觉得真香。很多愣头青觉得自己是天才,可以把屎山重构了。他们中的大部分人引

发了屎崩,永远埋在了几千米高的屎山之下。极少数人活了下来。他们真的做到了,他们真的

重构了整座屎山!

重构之后的那个东西,被后人称为——屎山2.0。

尿海不择细流,故能成其大;屎山不拒细壤,方能就其高。屎山就这样一天天长大,终于令最

后接手的码农感叹:高山仰止,景行行止。其实,屎山,是任何复杂系统的终极归宿。无论你

使用何种语言,师从什么流派,哪怕23种设计模式样样精通,最终还是会踏上前往屎山的道

路。因为,条条大路通屎山。

最后

针对祖传代码,我总结一下我的人生感悟,就是四个大字:

你看完上面的建议,是不是以为这四个字是“愚公移山”啊?

哈哈哈,不是的,是

“精卫填海”
在这里插入图片描述

基于模型开发之代码集成(三)——Le… 经过前一篇文章的介绍,基本上Matlab的LegacyCodeTool能干什么有个大概的了解。下面对LegacyCodeTool的命令和参数集做一些介绍。   LegacyCodeTool的命令集如下: legacy_code('help')specs = legacy_code('initialize') legacy_code('sfcn_cmex_generate', specs) 阅读详情

相关推荐

从系统可用到业务可用,SAP S/4HANA Cloud Public Edition 配置工作的正确打开方式

SAP S/4HANA Cloud Public Edition 的实施难点在于从"技术可访问"到"业务可运行"的转变。系统配置不再是简单的参数维护,而是企业运营模型的标准化过程。核心工具 SAP Central Business Configuration(CBC)负责业务范围选择、组织结构设置和流程配置,需与 SAP Activate Roadmap Viewer 和 SAP Cloud ALM 协同使用。2系统与3系统景观的选择直接影响配置传输和测试流程。实施团队需转变传统思维,遵循"先看标准能力,再

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1327

不听老码农的劝,改了「祖传」代码后.....

祖传代码,请勿乱动这个段子在程序员的江湖中流传已久了,可以说,无论是小白还是老司机,面对祖传代码都是闻风丧胆。每一个小小的改动无不是在玩火,动了一小行,改上大半月,有时候,一不小心改个语句...

传智播客的专栏 2469

简单说说Python中的pip如何换源

【安装包】:pip install 【升级包】:pip install --upgrade 【卸载包】:pip uninstall 【查看已安装的包】:pip list【搜索包】:pip search (注意:pip search功能在pip 10.0.0之后被弃用,建议使用其他方式搜索包,如访问PyPI官网或使用其他搜索引擎)

一捌柒的博客 2668

“祖传代码“的是是非非

程序员眼中的“祖传代码”,就像一本古老而神秘的魔法书,藏着无穷的智慧和技巧,有些代码像家传宝贝,有些像祖传秘方。快来分享一下你遇到的“祖传代码”吧~

lmy050813的博客 1916

从Protocol到硬件控制:揭秘高通UEFI中ABL与XBL的协作机制

本文深入解析了高通UEFI架构中ABL与XBL的协作机制,重点探讨了Protocol通信在硬件控制中的关键作用。通过对比传统GPIO控制方式,揭示了Protocol架构在安全性、可维护性和灵活性方面的优势,并提供了关机充电场景的实战案例分析及调试技巧。

weixin_29185199的博客 431

python-调用动态链接库dll/so的方法

使用python ctyeps CDLL来调用linux下的so动态链接库或windows下的dll动态链接库

XIAOXIANG233233的博客 3662

程序猿的终极噩梦,祖传代码,一动修半年!

1024程序员节即将到来,今天咱就来聊点轻松诙谐的话题——那些让人好气又好笑的祖传代码。 很多萌新们都经历过:兢兢业业的检查代码,结果挖出一堆不知多久以前的漏洞。当你信心满满准备修复,结果刚动手,整个系统就崩了。 这些前人贡(wa)献(keng),也被称为祖传代码,是一代又一代程序员的噩梦。 《九章算法班 2020版》扩充5倍课时 课程亮点: 疫情应对版《九章算法班》,令狐冲老师扩容5倍课程量 8周内讲解57个面试核心高频考点 课程内容由9章节增加至43章 7天视频回放,戳我即可免费报名 什么是祖

九章算法的博客 1439

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下...

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下 CT Image with Window presets This is an example of displaying a ct image along with buttons to set ww/wc pres...

浩秦的博客 1841

程序猿的终极噩梦,祖传代码,一动,修半年!

程序猿的终极噩梦应该是祖传代码了吧。 很多码农小萌新们,都经历过这样的时刻吧。矜矜业业检查前人代码时,发现了明显到觉得智障的漏洞,认真的你准备大刀阔斧地修改,但你的老司机同事可能会劝你最好不要动,并露出意味深长的表情。 因为他们知道,你遇到了祖传代码。 什么是祖传代码 祖传代码(legacy code)就字面意思而言,就是前人...

九章算法的博客 1127

FPGA实现Gardner环定时同步:Verilog代码与Testbench实战解析

本文深入解析了在FPGA上实现Gardner环定时同步的完整过程,详细阐述了其非数据辅助的定时误差检测原理。通过Verilog代码实战,展示了内插滤波器、定时误差检测器、环路滤波器和数控振荡器等核心模块的设计,并提供了完整的Testbench验证方法,帮助开发者解决数字通信系统中的时钟同步难题。

gpt4scribbler的博客 576

IEEE Transactions on Industrial Informatics(TII) 投稿须知- Initial Submission

请注意,您可以在作者中心查看稿件的当前状态,如:在EIC办公室、分配给AE、AE邀请审稿人、AE指定审稿人、正在审稿、等待AE决定、等待EIC决定。为了确保公正的评审过程,我们要求在稿件中没有任何作者的身份(不包括作者的姓名、传记、隶属关系、求职信、签署的版权表格、识别脚注、致谢等)。如果你的手稿有很大一部分已经在会议上发表过,论文必须隐藏所有作者的身份,这样会议论文就可以被引用,就好像它是由不同的作者写的一样。请注意,通常你的技术成就是根据被引用的次数来评估的,而不是根据发表的论文数量。

loinleeai的博客 4430

程序员是如何看待「祖传代码」的?

有些祖传代码,逻辑清晰,注释完整,运行稳定,是团队的传家宝;而有些祖传代码,注释全是“这个功能太复杂,懒得解释”,变量命名像谜语,改一行能炸三天,简直是祖传雷区。你接手祖传代码时可能痛骂前人,但请记住:以后接手你代码的人,可能也会骂你。对程序员来说,接手祖传代码的那一刻,心情往往五味杂陈:既感叹于它“活得久”,又怀疑它“为啥没被重构”;祖传代码这个东西,堪称程序员界的“神奇物种”,不仅常见,而且千奇百怪。因为它是团队的“历史遗产”,很多业务逻辑都写在代码里,如果没有它,你可能根本不知道系统是怎么跑起来的。

m0_61562916的博客 686

(侧边抽屉)移动端APP汉堡页设计全解:从规范落地到体验优化

汉堡页是一种隐藏式侧边导航组件,由汉堡图标(三条水平横线)、侧边抽屉面板、主界面遮罩层三部分构成。点击汉堡图标后,面板通常从左侧滑入,覆盖主界面部分区域(或悬浮于主界面之上);关闭时可通过点击关闭按钮、遮罩层、返回键或侧滑手势完成,是移动端特有的空间优化设计模式。

qq_67370502的博客 617

【闲聊】-祖传代码:如何解决

祖传代码” 通常指的是那些在一个项目或组织中,由于历史原因而被长期保留下来的代码。这些代码可能已经有几十年的历史,甚至在某些情况下,比开发它们的程序员还要老。这些代码通常包含了大量的技术债务和不易理解的部分,因为随着时间的推移,原始的开发者可能已经离开,而新的开发者可能并不熟悉这些代码。假设我们有一个祖传的代码片段,它是用C语言编写的,用于计算一个数组的平均值。当然,不排除有些祖传代码是由于很优秀留下来的,这种可以作为学习使用。处理祖传代码是一个挑战,但并非无法解决。

前鼻音的博客 1163

【人工智能】-01、人工智能概述

从理论上讲没有当今计算机不能计算求解的问题(B)。A. 是B. 不是C. 尚无定论。

super_mochi1 351

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

关于legacy code学习笔记

legacy code是目前很多公司面临的问题,就是这些code有用但是需要很多精力或者程序员去学习才能维护。  比如说你自己三年前些的代码,因为文档不完全而现在自己都几乎看不懂了,也是legacy code的一种。    一个比较好的处理办法是对code加上测试, 针对rails代码来说:     1.   看database schema      2.  看class之间的联系, r

edison702的专栏 2330

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【python】给你分享几段我的祖传代码,拿走不谢~

今天分享几段工作生活中常用的代码,都是最为基础的功能和操作,而且大多还都是出现频率比较高的,很多都是可以拿来直接使用或者简单修改就可以放到自己的项目当中。

mate1357的博客 272

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

祖传代码:代码背后的历史与文化价值

祖传代码不仅仅是一段代码,更是一种历史和文化的载体。它们传承着编程的智慧和经验,展示了编程艺术的魅力和魔力。作为程序员,我们应该珍视和传承这些祖传代码,不断探索和发掘其中的价值,为编程社区的发展做出自己的贡献。欢迎在评论区分享你所遇到的祖传代码,以及它们在你编程生涯中的意义和影响!

double222222的博客 1587

祖传代码,请勿乱动打印

" ----------------------- 祖传代码 ----- 请勿乱动 ------------------------------ ")

zheshihuahua的博客 833

魔法书里的编程遗产:祖传代码的故事

在编程的世界里,没有绝对的“永恒”。在数字世界的深处,程序员们时常会遇到一些特殊的代码——它们不是简单的指令集合,而是承载着前辈智慧的“祖传代码”。我们需要通过不断的学习和创新,将这些古老的智慧与新技术相结合,创造出更加高效、安全和智能的编程解决方案。随着项目的成长和团队的扩张,新的开发者加入进来,他们在学习这些代码的过程中,不仅理解了项目的业务逻辑,更深入地感受到了前辈们对技术的热爱和执着。高效性:尽管随着技术的进步,很多祖传代码可能已经不再是最优的解决方案,但它们在特定场景下仍然保持着出色的性能。

qq_35309973的博客 385

祖传代码:一本古老而神秘的魔法书

程序员眼中的“祖传代码”,就像一本古老而神秘的魔法书,藏着无穷的智慧和技巧,有些代码像家传宝贝,有些像祖传秘方。快

流浪字节的博客 670

Simulink建模基础:通过Legacy Code Tool集成C函数

本文通过一个例程来简述如何使用Legacy Code Tool将外部C函数集成到Simulink模型中。 文章目录1 问题引入2 编译器安装3 Legacy Code Tool简单示例3.1 创建C文件和头文件3.2 通过LCT生成S-function模块3.3 模型仿真3.4 代码生成4 总结 1 问题引入 假设一个公司在旧的项目中,没有通过Simulink建模并生成代码,而是纯手写的C代码。在新的项目中应用了Matlab的这一套工具链进行MBD开发,想要在模型中直接调用以前写的C函数可以吗? 答案是肯定

u013288925的博客 7784

基于模型开发之代码集成——LegacyCodeTool

两种比较简单的方法可以将代码集成到模型中。   1、使用Legacy Code Tool来集成C代码到Simulink模型   2、在StateFlow建模过程中使用CustomCode 集成或调用已有C代码 LegacyCodeTool简要说明   Legacy Code Tool是Matlab中的一个命令行工具,它可以很方便的将已有的C

动感小麦兜的博客 5777

何为屎山代码?

编程圈流传着这样一个有趣的小故事:一个哥们上班忽然怒气冲冲,大声质问:“这 TMD 谁写的代码,这么明显的 bug 都能写出来,还不写注释?屎山代码,也被称为"祖传代码",是历史遗留问题,是前人留给我们的"宝藏"。你一个人硬着头皮改,你必然疲惫不堪,身心俱疲,最后也必成拉屎之人,千万不要明知山有屎,偏向屎山行。通过良好的编程习惯,清晰的代码结构,充分的注释和文档,我们可以为后来者留下一个更加稳固的代码基础…但听我一句劝:屎山代码虽然看着难受,但一旦动手,山就可能塌了,将自己深埋于屎山之中,臭不可闻。

专注于全栈开发领域 1万+

程序员是如何看待“祖传代码”的?

通过合理的策略和技术手段,可以将祖传代码的挑战转化为推动技术进步和创新的机遇。通过这些策略,可以有效地管理和维护祖传代码,确保软件系统的稳定性、安全性和可维护性,同时支持业务的持续发展和技术的进步。:很多祖传代码包含了特定行业的知识和逻辑,这些代码是行业知识和经验的积累,对于新入行的程序员来说,是宝贵的学习资源。:祖传代码中的某些解决方案可能激发新的创新思维,程序员可以通过分析和学习这些代码来找到新的解决问题的方法。:对祖传代码的维护和传承,是技术传承和知识传递的重要部分,有助于保持软件的连续性和稳定性。

小相探索IT世界 1116
上一篇: python入门必备知识点大全(详细到不行)
下一篇: 别这样直接运行python命令,否则电脑等于“裸奔”
python2021_
博客等级 码龄6年 1730粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值