程序员的九“重构”天

维护一个长期系统的时候,对于程序员的要求就和全新开发不同了。

全新开发项目的程序员的要求就是符合需求、符合技术规范。

而维护一个长期的系统,需求往往是不完整的,很多时候需要从代码中理解程序的结构,据此可以按照程序员重构系统的能力列举出九个层次,正如中国传统文化中经常提到的九重天,正巧有一个“重”字,本文也说说九“重构”天。

一,看不懂代码,按照需求重写

如果需求和程序实现不一致的话,那么就只符合需求了。

这虽然是重构最低的一级,但是放在程序员开发中,也是中上等的程序员了,因为很多程序员按照需求文档都不能正确实现需求。

这也像是仙侠小说中的修炼,只有普通人中的上上天资才能进入修炼天道的门槛。

二,能对照需求理解代码,按照理解后的需求重写

和第一层类似,不过在对照需求理解代码的同时,能挖掘出很多需求文档中没有写,但是代码中已经实现了的需求。

如果类比仙侠小说,这就开始有了一定的领悟能力了。

三,能对照需求梳理代码,按照梳理后的需求重写

理解和梳理不同,理解是看到一块代码理解一块代码,而梳理则是在理解的基础上,还能抽象出已经实现的代码的结构,尽管这种抽象是体现在代码中,但是并没有明确的写出来,而且散乱在很多地方,需要程序员汇集整理。

如果类比仙侠小说,这就是在领悟了个别动作之后,能自己把独立的动作联系在一起了。

前面三个层次,都是重写,也就是需要重新完成原有的工作,需要投入相当一样的工作量。

四,当原有代码有一定质量的时候,能看懂代码结构,可以遵照原有代码结构进行小范围增加

这里面的要求是原有代码有一定质量,如果原有代码质量差,那么还是重写吧。

第四层还有一个意义,也就是这个级别的程序员,工作可以不断的累积,同时不会降低代码质量。

五,当原有代码有一定质量的时候,能看懂代码结构和所涉及的代码,可以遵照原有代码结构进行小范围修改

增加和修改不同,增加是追加逻辑,不影响原有逻辑,而修改可能影响原有逻辑,特别是原有逻辑之间存在隐含的依赖关系的时候。

修改的前提也是原有代码有一定质量,而且代码的修改也是要一直不低于这个级别的程序员,这样工作才能累计,而且不会降低代码质量。

六,当原有代码有一定质量的时候,能看懂代码结构,可以遵照原有代码结构修改代码结构

修改代码结构可能很多人觉得这种情况很少见,事实上最常见的就是升级框架,升级第三方库等各种基础代码。

在实际项目中往往被忽视,甚至有的企业会安排新手做这件事,因为觉得没有实现什么新需求,不创造价值。

对于成熟的框架、第三方库来说,因为已经有大量的升级实践发现了各种缺陷,不过对于不成熟的框架和第三方库来说,特别是企业内部专属的框架和库,升级后不兼容甚至原有逻辑混乱的情况就很常见了。这时候不可能全部项目重写,就需要有这个能力的程序员在升级结构的同时保证程序质量。

和前面两层同样,类似的工作需要有相同能力的程序员才能保证代码质量,有些公司经常是让新手重构,然后搞砸了让熟手打补丁,这种安排和逼人离职差不多。因为代码结构已经混乱了

七,当原有结构清晰健壮的时候,能扩展原有结构

这种情况主要出现在集成的时候,几个程序的结构都清晰健壮,但也需要有人把两者集成在一起,当然,到了这个层次的程序员的重构工作就不再是具体需求了,而是扩展结构后让其他程序员按照扩展后的结构继续开发了。

八,当原有结构清晰健壮的时候,能调整原有结构

这种情况主要出现在基础架构调整,同时不想重写业务代码,就需要在中间的结构层面进行调整,例如单机部署变成集群部署,就需要调整结构,使得调整过程对业务代码透明。当然,这不意味着是最优的,后续还需要对业务代码按照新的结构调优。

九,当原有结构清晰健壮到时候,能重构原有结构

这种

神的世界我是不懂的

但是

不能否认世界上有这种神级程序员

时间: 2024-08-28 07:11:00

程序员的九“重构”天的相关文章

程序员的九大重构天梯

"java程序员"开发一个项目系统和后续维护一个系统,这两种需求对于程序员的能力要求是完全不同的. 全新开发项目对程序员的基础要求是符合需求.符合技术规范. 而维护一个长期的系统,内部的代码往往是不完整,纷繁杂乱的,很多时候程序员往往需要从这些代码中理解程序的结构,理解其逻辑关系,然后才可以修改更新. 因此我们可以按照程序员重构代码的能力划分成九个层次.本文就讲讲代码重构九重天. 一.看不懂代码,按照需求重写 如果需求和程序实现不一致的话,那么就只符合需求了. 这虽然是重构最低的一级,

Java程序员金九银十跳槽面试,微服务架构是你必须过的坎

近几年,微服务架构迅速在整个技术社区窜红,被认为是 IT 软件架构的未来方向.一线互联网公司由于具有大量的业务体量和业务场景,比如阿里.百度.网易,很早就开始入坑微服务架构. 但说起微服务,不少人还是有这样的困惑:"作为一个开发,微服务架构是不是和我关系不大?那不都是架构师的事吗?"关于这个问题,我来谈谈自己的看法.微服务是当下最火热的后端架构之一.不管你是一个什么级别的程序员,也不论你在一个什么体量的公司,服务化都是你迟早会遇到的难题.实践微服务的过程本身也是一个升级打怪的过程,这中

优秀程序员应该具备哪些素质?

优秀程序员应该具备哪些素质? 你可以不聪明,但是你绝对不能不用心. --<女人公敌> 程序员求职是本是一件只要"郎有情女有意",一拍即合的事情,可是企业与求职者却总是看不对眼.聊不到一块去,进而导致IT市场上总是会出现结构性失衡的现象.一方面,社会每年培养大量的计算机相关专业毕业生,他们却找不到好的工作,但另一方面,企业却招不到好的程序员.据不完全统计,大学生里面大约有23%的人是学习计算机.通信.电子相关专业的,都可以从事程序员相关工作,也就是说全国每年大约有160 万准

这玩意儿我也写得出来,为什么我就不是高级程序员呢?

Brian Goetz 是 Java 领域的技术大牛,同时也是<Java 并发实践>一书的作者之一.我最喜欢的一句名言就是他讲的.这句话出现在甲骨文公司以<编写傻瓜式代码>为题发表的访谈当中,当时记者问到 Goetz 如何才能编写出性能良好的代码.以下是他给出的睿智回应: 一般来说,在 Java 应用程序当中快速编写代码的方法,就是先写点傻瓜式代码--这类代码简单.干净,而且遵循最明确的面向对象原则. 在接下来的发言中,他一直在具体解释:为什么尝试优化代码并试图让代码看起来不那么傻

《重构--改善既有代码的设计》总结or读后感:重构是程序员的本能

此文写得有点晚,记得去年7月读完的这本书,只是那时没有写文章的意识,也无所谓总结了,现在稍微聊一下吧. 想起写这篇感想,还是前几天看了这么一篇文章 研究发现重构软件并不会改善代码质量 先从一个大家都有的经历说起吧. 刚开始学编程时,比如,要统计数字出现的次数,我们会这么定义变量 int i=0;//统计次数 老师看了说,代码要有可读性,见名知意; 于是,我们把它改成 int count=0; 后来才知道,原来这么一手这就是重构的第一式,重命名 (eclipse快捷键 alt+shift+R,最近

程序员的奋斗史(三十九)——大学断代史(三)——我和知乎邂逅

遥望2011年的某个惶惶岁月,那是我与知乎相识的日子. 排除知乎网站的内测用户,我应该算得上第一批用户.那时知乎网还未开放注册,只能通过好友邀请注册,我费了九牛二虎之力,申请了好几次,才拥有了知乎账号.作为一个真实的问答社区,从近几年的运营来看,知乎是成功的.虽然外界曾质疑知乎网站的盈利模式,但不可否认知乎是伟大的. 众所周知,知乎的原型是国外的Quora.以前一直以为Quora是多么的神圣,直到今年注册并使用后,才发觉知乎在用户体验上一点不逊色于Quora.好的网站当如知乎,简洁美观.操作简便

对九个超级程序员的采访

对九个超级程序员的采访 原文:<Q&A With Nine Great Programmers>时间有限,我只能粗译,难免错误. 这篇访谈源自2006年,最先发布在波兰程序员 Jaroslaw “sztywny” Rzeszótko (AKA “Stiff”) 的博客上.但是这篇博文现在找不到了.非常感谢他能授权我重新发布这个博文. 在一个炎热无聊的下午,我突发奇想.我想通过电子邮件的方式对那些我非常感兴趣和非常敬重的程序员问10个问题.准备这10个问题我只花了5分钟,这些都是我个人想

如何让程序员更容易的开发Web界面?重构SmartAdmin展示TinyUI

如何让程序员更容易的开发Web界面,是一个持久的话题,所有的从事相关开发的公司都会碰到这个问题,并且被这个问题所深深困扰. Tiny框架也不得不直视这个问题,确实来说,想解决这个问题,也是非常有难度与深度的,业界也有各种各样的尝试,这也是有各种各样不同框架出现的原因. Tiny框架构建者认为,完全采用一种框架解决所有问题,是不现实的.而且即使目前找得到一种非常好的框架,暂时可以满足应用需要,但是随着技术的发展,业务的进化,就会慢慢变得不再满足业务需要.因此,Tiny框架构建从不再把做一套UI组件

程序员的奋斗史(四十五)——大学断代史(九)——独自南下的岁月

文/温国兵 2014年2月,独自踏上了南下的路. 对于一个13岁就独自到过广州的我来说,出远门并不陌生.话虽如此,但还是感到了独自南下的那份孤独.到了广州,找房.买生活用具,沉重的包袱压得我喘不过气来.大把大把的金钱瞬间就流入他人的口袋,才知道生活的不易和挣钱的艰辛.以前享受着高枕无忧的生活,每个月父母按时打来生活费,每天在学校过着安逸的生活,却不知父母在外打拼的艰辛.是的,父母在外承受了太多,为了我的幸福生活牺牲了太多,而我很多时候却不知道知足,有时在不经意间说伤害父母的话,现在想来很是不应该