导航:首页 > 程序命令 > 程序员开始处理遗留代码的时候

程序员开始处理遗留代码的时候

发布时间:2025-02-11 02:42:13

❶ 什么是代码走读和代码机械化

(1) 代码走读都有哪些内容?

代码走读根据目的的不同,可以分为四个层次:

1、检查是否符合编程规范;
2、寻找编译器中的设计陷阱;
3、快速理解源代码,找出流程设计中的问题;
4、对原有代码的重构;

这四个层次可以按照从简单到复杂的顺序进行。

(2) 这四个层次都有什么区别和意义?

1、 检查是否符合编程规范;

编程规范融合并提炼了许多人多年开发编程语言程序积累下来的成熟经验,帮助编程者形成良好的编程风格,提高源程序的可读性和可维护性,降低出错的机会,迅速跨入业已存在的且具有相当高度的技术层次,并能够为提高代码的复用性提供积极的参考。

2、 找编译器中的设计陷阱;

术语“陷阱”的发展历史并不明确,而且它有多种定义方法。本文定义为编程和设计过程中常见的和可防止的问题,能顺利通过编译,没有任何警告和错误信息,而且计算机严格按照作者写明的代码执行,但是结果却不是作者期望的。许多IT人士都知道,现在市场上有很多新的编译器,它们可以捕获大部分程序错误,但遗憾的是,仍有许多错误是编译器不能发现的。打个比方,拼写检查程序是用来查找拼写错误的,但是,如果单词DOG被错误地写为CAT,您能指出单词CAT(实际是DOG)中的拼写错误吗?很显然,不能。因为这个单词可顺利通过拼写检查程序。

这里描述的陷阱所包括的范围广泛,从较容易的语法问题,基本设计缺陷,到完全错误的行为。利用正确的使用方法来说明这些常见的误解和误用,可以防止编程者出现类似的问题,并防止新一代程序员重复过去的错误。

3、 快速理解源代码,找出流程设计中的问题;

无论是沟通程序的操作,还是将知识存储为可执行的形式,软件的源代码都是最终的介质。我们可以将源代码编译成可执行程序,也可以阅读代码来了解程序的功能及其工作方式,还可以修改源代码来改变程序的功能。大多数编程课程和书籍都将重点放到如何从零开始编写程序上。然而,在软件系统的工作投入中,40%~70%是用在系统首次编写完整之后,这些工作一定涉及到阅读、理解、以及修改最初的代码。另外,遗留代码持续不断、不可避免的累积;对软件重用的强调;软件行业中人员的高流动性;同时,开放源代码开发工作和协同开发过程(包括外包、代码走查和极限编程)日益重要,使得代码阅读成为当今软件工程师的一项基本功能。此外,阅读实际的、编写良好的代码,可以更加深入地了解如何改造与编写重要的系统,仅仅编写小型的程序学不到这种能力。

有时,阅读代码是一件不得不去做的事,比如:为了修复、检查或改进现存的代码,都必须去阅读相关的代码。有些时候,阅读代码也许是为了了解程序是如何工作的,对于任何能够“打开盖子”的事务,作为工程技术人员,我们总是倾向于分析一下它的内部结果。您阅读代码可能是想提取可供重用的材料,或者仅仅是出于个人兴趣,将代码作为一种文献。每种原因的代码阅读都有自己的一套技术,强调不同方面的技能。

代码走读中的阅读源代码强调的是通过快速理解源代码,找出流程设计中的问题这个目的。

4、 对原有代码的重构;

重构的含义是:在不破坏可观察功能的前提下,借由搬移、提炼、打散、凝聚……,改善事务的体质、强化当前的可读性、为将来的扩充性和维护性做准备、乃至于在过程中找出潜在的“臭虫”,就成了大受欢迎的稳步前进的良方;

(3) 编程规范、设计模式和设计陷阱是什么关系?

模式是避免陷阱或从特定陷阱中恢复的一种方法;

从陷阱的角度来看,设计模式有两个重要属性。首先,他们描述了经过实践证明的成功的设计技术,而且可以用上下文相关的方法定制它们,以适应新的设计情况。其次,更加重要的是,提及特定的模式时,不仅说明了所应用的技术,而且说明了应用的原因以及结果;

当需要时,适合设计或者编码上下文的模式、惯例、编程规范,将“自然地”从自己的潜意识中冒出来,这说明正确使用了模式、惯例、编程规范的一种迹象;

识别陷阱与对条件的反射类似,一朝被蛇咬,十年怕井绳。然而与比赛和打仗一样,为了学习如何识别和避免危险情况,并不需要一定被烧伤或者被枪伤。一般情况下,必要条件就是提前警觉;

(4) 设计模式和重构是什么关系?

设计模式给我们的,不仅仅是一些问题的解决方案,更有追求完美“模型”的渴望,但是,Joshua Kerievsky在那篇着名的《模式与XP》中明白地指出:在设计前期使用模式常常导致过度过程。这是一个残酷的现实,单凭对完美的追求无法写出实用的代码,“实用”是软件压倒一切的要素。

(5) 快速理解源代码和重构是什么关系?

进行重构时,您从一个能够正常工作的系统开始做起,希望确保结束时系统能够正常工作。一套恰当的测试用来可以帮助您满足此项约束,所以重构应该从编写测试用例入手。一种类型的重构专注于修复一种已知的问题点。在此,您必须理解老的代码、设计新的实现、研究新的实现对相关其它代码造成的影响(多数情况下,新代码能够“无声无息”地完成替换)并实现更改,所以重构需要先快速理解老的代码。

(6)快速理解源代码查找缺陷和寻找设计陷阱查找缺陷有什么不同?

快速理解源代码找出的代码中的问题一般是流程设计上和软件需求满足上的特定的问题,需要读者翻很多页(发现前后的关联),而寻找设计陷阱找出的代码中的问题一般是普遍性的问题,一般不需要读者翻页,就在这一行的上下文中就可以找到。

(7)这几个层次的代码走读和单元测试是什么关系?

只有快速理解了源代码才可以完成单元测试,或者说快速理解源代码是完成单元测试的前提;

利用单元测试可以帮助更好地重构;

代码走读发现的问题比单元测试发现的更多、更快和更早;

单元测试发现不了不满足编程规范的问题

(8)代码走读都有哪些方法?

形式上可以遵从同行评审的结构化的正规检视、走查、单人复审等;

人工走读时,检查单可以按照头脑风暴、亲和图、鱼骨图方法形成系统化的检查树和处理机制;

工具走读可以借助一些商用的测试工具和自己开发的辅助工具进行走读。

(9)代码走读听起来是不错,如何才能达到效果吗?

代码走读中使用的检查单(或检查树)是很多人提炼和总结出来的结晶,市场和业界这方面的资料比较缺乏,因为多是个别大公司或个人的心血,所以很少在外面流传,自己研究和总结有点得不偿失,不如参考行业的优秀实践,所以最好接受有经验的专家的培训或向有经验的同行请教,在指导下开展推行,避免浪费自己的宝贵时间。

(10)代码走读和同行评审是什么关系?

同行评审是一种比较偏管理的方法,评审的材料可以包括文档和代码,对于代码的同行评审就是代码走读,本文讲的代码走读偏重于技术层面的方法,两者只有有效地结合才能更大地发挥它们的威力!

❷ 程序员都有祖传代码,就不会有问题了吗

程序员被戏称为“码农”,天天与代码打交道的他们按理说应该对代码有着深厚的感情基础,但在每个科技公司都有这样一种代码:多数程序员们都怕遇到,有经验老码农有时候也束手无策,往往一步错、步步错,动了一小行,改大半月。相信很多程序员都被这种代码折磨过,就是大名鼎鼎的“祖传代码”

传统观点认为,工程技术团队应该为代码库(也就是技术债务的所处环境)建立一种直观的感受,了解其对公司的影响,而后在组织内建立信任。如果首席架构师强调重构核心代码,那么,开发者通常就得按照指示行动。诚然,如果公司可以对技术债务建立起一种共识与信任文化,这将有利于挽留优秀的工程师,并保持业务良好运作,但这往往需要多年努力。

❸ 系统程序员怎样把代码写得又快又好

很多初学者包括一些有经验的程序员,在敲完代码的最后一个字符后,马上开始编译和运行,迫不急待的想看到自己的工作成果。快速反馈有助于满足自己的成就感,但是同时也会带来一些问题:

让编译器帮你检查语法错误可以省些时间,但程序员往往太专注这些错误了,以为改完这些错误就万事大吉了。其实不然,很多错误编译器是发现不了的,像内存错误和线程死锁等等,这些错误可能逃过简单的测试而遗留在代码中,直到集成测试或者软件发布之后才暴露出来,那时就要花更大代价去修改它们了。

修改完编译错误之后就是运行程序了,运行起来有错误,就轮到调试器上场了。花了不少时间去调试,发现无非是些低级错误,或许你会自责自己粗心大意,但是下次可能还是犯同样的错误。更严重的是这种debug&fix的方法,往往是头痛医头脚痛医脚,导致低质量的软件。


让编译器帮你检查语法错误,让调试器帮你查BUG,这是天经地义的事猛灶,但这确实是又慢又烂的方法。就像你要到神知行离家东边1000米的地方开会,结果你往西边走,又是坐车又是搭飞机,花了一周时间,也绕着地球转了一周,终于到了会议室,你还大发感慨说,现代的交通工具真是发达啊。其实你往东走,走路也只要十多分钟就到了。不管你的调试技巧有多高,都不如一次性写好更高效。


下面是我在阅读自己代码时的一些方法:


检查常见错误


第一遍阅读时主要关注语法错误、代码排版和命名规则等等问题,只要看不顺眼就修改它们。读完之后,你的代码很少有低级错误,看起来也比较干净清爽。第二遍重点关注常见编程错误,比如内存泄露和可能的越界访问,变量没有初始化,函数忘记返回值等等,在后面的章节中,我会介绍这些常见错误,避免这些错误可以为你省大量的时间。如果有时间,在测试完成之后,还可以考虑是否有更好的实现方法,甚至尝试重新去实现它们。说了读者可能不相信,在学习编程的前几年,我经常重写整个模块,只我觉得能做得更好,能验证我的一些想法,或提高我的编程能力,即使连续几天加班到晚上十一点,我也要重写它们。


模拟计算机执行


常见错误是比较死的东西,按照检查列表一条一条的做就行了。有些逻辑通常不是这么直观的,这时可以自己模拟计算机去执行,假想你自己是计算机,读入这些代码时你会怎么处理。北大青鸟http://www.kmbdqn.cn/认为这种方法能有效的完善我们的思路,考虑不同的输入数据,各游哗种边界值,这能帮助我们想到一些没有处理的情况,让程序的逻辑更严谨。


❹ 程序员都有祖传代码,是真的吗

首先,基本上大部分都是有祖传代码的,几乎每个公司都会存在祖传代码。在代码界,有一个令程序员闻之心惊、谈之色变的存在——祖传代码(legacy code)。相信很多接触编程的人都对祖传代码有着难以言表的恐怖体验。如果不改这个祖传代码,就难以实现新的需求,支撑新的业务。但是一旦改了这个代码,改之后新出现的bug绝对能让人失去理智。
祖传代码,前人程序员留下的“宝藏”代码,这种代码多多少少都会存在些问题。运气好点的会碰到by xxxx多少年的注释,运气差的连注释都没有,各种奇葩的逻辑,甚至直接一大段看不懂的代码。这一般就是程序员们所说的祖传代码,祖传代码又称作“屎山”、“历史遗留代码”。碰到这种代码,程序员们最好不要去优化去动它,因为可能会引发后续一系列的问题。所以遇到这种代码,一般程序员会有两种应对方法。

❺ 大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一自己被裁,要确保留下的代码不可维护......

在面对大厂裁员潮时,有部分程序员采取了“防御性编程”的策略,以确保自己的代码难以维护,甚至在被裁后,公司可能需要花费更多时间和资源去理解或修改这些代码。这种做法看似是一种自我保护手段,但实际上却反映了行业环境的严峻性和职场压力。

“防御性编程”主要是指程序员故意编写一些复杂、难以理解的代码,使得代码的可读性和可维护性大大降低。这种策略旨在提高自己的不可替代性,因为在被裁员后,留下的代码会成为一个潜在的“绊脚石”,公司可能需要额外的时间和资源来解决遗留问题。

这一现象的产生,与互联网行业巨头裁员潮有关。在经济压力和市场波动的影响下,大厂纷纷寻求成本控制和效率提升,这在一定程度上加剧了职场的不确定性。在这种背景下,程序员们开始探索如何在被裁员时保护自己,而“防御性编程”正是这种尝试的一种表现。

然而,这种做法存在争议。有人认为,这不仅对公司的长期发展不利,也损害了程序员自身的专业形象。实际上,编写清晰、简洁、可维护的代码才是行业发展的正道,因为它不仅有利于团队协作,还能提高软件的质量和稳定性。在面对经济挑战时,更应该寻求提升自身技能、增强专业价值的途径。

理性的看待“防御性编程”,我们可以理解为是一种生存策略,但其潜在的负面影响不能被忽视。长远来看,这种做法可能对个人和行业都产生不利影响。因此,作为行业和公司,应该关注员工的福祉和职业发展,提供支持和培训,帮助他们提升技能,而不仅仅是依赖于这种短期的“自救”策略。

实际上,程序员们更希望编写出优美、无误、易于维护的代码。在面对压力时,他们应该关注提升个人能力、适应行业变化,而不是依赖于“防御性编程”的策略。作为个人,持续学习和专业成长是应对职场挑战的更可持续的方法。同时,公司也应该采取积极措施,维护员工权益,创造一个有利于个人和公司共同成长的环境。

阅读全文

与程序员开始处理遗留代码的时候相关的资料

热点内容
未来之光手机云服务器 浏览:158
服务器下载资料为什么c盘满了 浏览:263
怎么清除空文件夹 浏览:544
如何查看派派服务器 浏览:802
杀手6解压画面 浏览:669
夸张程序员 浏览:467
如何直播切两个APP画面 浏览:784
4x4测试服务器怎么获得 浏览:740
开环与闭环python 浏览:517
苹果手机上的东西怎么加密 浏览:554
坐过牢可以做程序员吗 浏览:254
男友是程序员女友是自由职业 浏览:272
娃娃智慧阅读源码 浏览:163
程序员敲响警钟 浏览:888
猴子吃桃递归算法 浏览:340
androidhttpcookie 浏览:833
python数组协方差 浏览:117
如何把app风险提示给去掉 浏览:19
源码怎么制作软件app程序 浏览:42
怎么获得小程序的本地服务器照片 浏览:676