程序员的九大重构天梯

“java程序员”
开发一个项目系统和后续维护一个系统,这两种需求对于程序员的能力要求是完全不同的。

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

而维护一个长期的系统,内部的代码往往是不完整,纷繁杂乱的,很多时候程序员往往需要从这些代码中理解程序的结构,理解其逻辑关系,然后才可以修改更新。

因此我们可以按照程序员重构代码的能力划分成九个层次。本文就讲讲代码重构九重天。

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

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

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

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

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

这时候有了一定的领悟理解能力了。

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

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

这就是在领悟了各种代码之后,能自己把独立的抽象概念汇聚融合在一起了。

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

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

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

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

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

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

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

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

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

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

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

和前面两层同样,类似的工作需要有相同能力的程序员才能保证代码质量,有些公司经常是让新手重构,然后搞砸了让熟手打补丁。

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

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

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

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

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

这种大神级的世界我是不懂的

但是

不能否认有这种超乎想像的程序员存在。

原文地址:https://blog.51cto.com/14512197/2443367

时间: 2024-08-30 11:29:36

程序员的九大重构天梯的相关文章

java 书籍推荐 JavaEE程序员必读图书大推荐

java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给您推荐的一些图书: 第一部分: Java语言篇 1 <Java编程规范> 星级: 适合对象:初级,中级 介绍:作者James Gosling(Java之父),所以这本书我觉得你怎么也得读一下.对基础讲解的很不错. 2 <Java核心技术:卷Ⅰ基础知识> 星级: 适合对象:初级,中级 介

转发---十大编程算法助程序员走上大神之路

十大编程算法助程序员走上大神之路 本文为转发,源地址:http://linux.cn/article-3613-1.html 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and co

十大编程算法助程序员走上大神路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "

程序员福利各大平台免费接口,非常适用

电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品 ID&type=1 ps:商品 ID 这么获取:http://item.jd.com/954086.html 物流接口 快递接口: http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号 ps:快递公司编码:申通=”shentong” EMS=”ems” 顺丰=”shunfeng” 圆通=”yuantong” 中通=”zh

程序员的十大烦恼

10. 注释 - 只解释了"how"却没有解释"why"入门级的编程课程通常会教育学生们写代码前先写注释.而且要尽量多注释. 这种教育的出发点是"多注释肯定比少注释好.少注释肯定比没注释好".可不幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下. Java code? 1 2 3 4 5 6 r = n / 2; // 让 r 等于 n 除以 2     // 当 r - (n/r) 大于 t 时进行循环   while ( abs

优秀程序员必备十大习惯

想成为一个优秀的软件开发人员,在今天,你该怎样发展你的职业生涯?这个是我总结的优秀程序员必备十大习惯.按照这些技巧和规则,你可以改善你的现状,由一个普通的程序员,成为一名优秀的程序员. 学会学习 作为开发者,就算是你有了3-5年的工作经验,你还是需要不断地学习,因为你在计算机这个充满创造力的领域,每天都会有很多很多的新事物出现,你需要跟上时代的步伐.你需要去接触新的程序语言,了解正在发展中的程序语言,以及一些编程框架.还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线的讨论,这样你才能明白

越来越多的Java程序员转行Java大数据...

JAVA的精密,强大,拥有其它语言不可替代的性能和可维护性,早已经是成为最受欢迎的编程语言之一,很多人想进入IT行业,首选的第一门语言就是JAVA. 但是,在未来肯定是大数据的天下,人工智能的爆发,将会有大量企业会进入大数据领域,从而产生大量的大数据人才需求. 据最新发布的<大数据人才报告>显示,目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万.领英报告表明,数据分析人才的供给指数最低,仅为0.05,属于高度稀缺.数据分析人才跳槽速度也最快,平均跳槽速度为19.8个月

程序员的十大思维误区

作为老码农老程序员,日常工作中打交道最多的也是程序员,在这个过程中,我发现不少程序员在技术.产品等方面的思维有各种各样的小问题.现在我就来回忆一下,把这些我认为不太好的思维习惯记录下来,在提醒自己的同时,也供程序员朋友们参考,不必对号入座,有则改之,无则加勉,或者你甚至认为这些不是思维误区都可以的,我也不知道起怎么样的标题比较合适,且称“程序员的十大思维误区”吧,祝阅读愉快! 1. 测试人员不按我的实现来测 前端界面有几个下拉列表框,需要选择后才能点“提交”按钮,但前端的实现是,即使不选择下拉框

程序员的九“重构”天

维护一个长期系统的时候,对于程序员的要求就和全新开发不同了. 全新开发项目的程序员的要求就是符合需求.符合技术规范. 而维护一个长期的系统,需求往往是不完整的,很多时候需要从代码中理解程序的结构,据此可以按照程序员重构系统的能力列举出九个层次,正如中国传统文化中经常提到的九重天,正巧有一个"重"字,本文也说说九"重构"天. 一,看不懂代码,按照需求重写 如果需求和程序实现不一致的话,那么就只符合需求了. 这虽然是重构最低的一级,但是放在程序员开发中,也是中上等的程序