提升编程效率:重构

01.png

提升编程效率的大致可以分三类:任务拆解(Tasking To Action)、使用高效的开发工具/框架、关注高效的工程实践。

其中任务拆解,我们在【实战TDD(2):Tasking To Action】(视频版) 中介绍了过了。

开发效率的工具/框架也才不但涌现,例如:Spring Boot、Spring Cloud、Elasticsearch 、Intellij IDEA 等为开发提供了不同领域的高效工具。

工程实践的也涉及到很多,比如:TDD、重构、Clean Code 等。

在过往的工作经历中,发现很多开发仅仅关注工具对开发效率的提升,当谈及如何写好代码时却没有像工具/框架那样能够侃侃而谈,究其原因是没有关注这方面的内容。

本文将聊聊提升编程效率的一个利器:重构。

为什么重构能够提升开发效率?

02.png

主要是以下五方面原因:

  1. 重构能够持续守护代码结构,避免了设计的腐败。

  2. 重构能帮助代码更容易被理解

  3. 重构能够提升编程速度

  4. 重构能够降低 Bug 修复时间。

  5. 重构能够提供的更快的应对变化的能力。

01 重构能够持续守护代码结构,避免了设计的腐败。

代码结构的流失是累积导致的,越难看懂代码要表达的意图,就越难保护代码中的设计,原本的设计也就流失的越快,设计就会腐败的越快。

小步重构能够持续不断的改善代码重点问题,将“大泥球”的代码通过一个个小的重构动作,让原本的设计而已维护,或者所设重构结构的清晰,让原本没有什么设计的代码,能够更清晰的表达短期意图。

日常工作让重构不能持续的一个原因就是短期目的。短期目的很重要,让我们始终聚焦在重要且紧急的任务上,但是问题是“只是关注短期目的,而忽视长期目的”。我们可以通过技术债来让 ROI 更高,但是同样也需要关注长期的 ROI。因此日常工作中,我们可以借助可视化等手段,维持重构的习惯,避免让原本花过心思的代码变得别人嘴中腐败的代码。

02 重构能够帮助代码更容易的被理解

就如同重构的定义:在不改其行为的情况下,改善其内部结构,从而提高可理解性、降低维护成本。

我们都知道,重构的结果产生的代码,具有良好的可读性,并且与业务上下文相呼应。

其实,重构的过程,也能够让代码更容易被理解,也更容易理解原本的泥球代码的意图。一边读代码,一边讲发现的代码的坏味道消除掉,读完了代码也有了更加清晰的代码的结果。

《重构》一书中有这样一句话:

Ralph Johnson 把"早期重构" 描述为”擦玻璃窗户上的污垢,是你能够看的更远”。

03 重构能够提升编程速度

一个人 / 团队并不是只写一个方法,一个类,一个接口就结束了。而是要在一个项目中经历几周、几个月、甚至几年。项目过程中持续的重构能够持续不断的改善代码的设计,并使之干净。团队中并不会因为某段代码晦涩难懂而不敢修改、不愿修改(因为需要花费大量的时间去做一件产出很低的事情,但是很难做)。

相信很多团队都遇到遗留的代码,而那些到处散布着坏味道的代码,正是因为这样的代码让开发效率低下,甚至停步不前。

重构能够提升编程速度,并不难证明。通过几个迭代的产出的结果就可以轻松的证明,对比一下没有重构的团队、有部分重构的团队、持续重构的团队在几个迭代后的产出结果,就会发现,持续重构的团队产出的内容每个迭代的结果都是相对稳定的,而没有重构的产出结构会越来越少,甚至无法响应业务提出的需求。

在遇到的开发者中有的人甚至对重构持反对看法,甚至更加偏激。问题往往是出现不清楚重构的技巧、重构的手法、重构工具的使用,和重构的实际。了解这些知识能够让重构事半功倍。

重构也不提倡偏激的“纯重构,为了重构而重构”,面对现实工作中任务的轻重缓急,重构也有自己的原则,例如“事不过三,三则重构“。

04 重构能够降低 Bug 修复时间

试想一下在一大坨代码中找一个bug并修复容易,还是在结构清晰,意图明确的代码中定位bug 并修复的成本高。

相信绝大部分情况都是后者。重构的结果就可能是生成一些小的方法,职责单一的类,层次结构相同的代码,在这样的代码中不用的担心不了解而不敢改动,看懂了代码即可修改。每个 bug 的上下文范围都小,修改后的代码影响范围也小。总的修复时间当然小。

05 重构能够提供的更快的应对变化的能力

现在工作中经常听到的一句话就是”拥抱变化“。开发者如何拥抱变化?加班加点?只能说是精神可嘉,但是方法不对。

重构产出了持续演进的代码设计,并消除日常代码中的坏味道,那么当新的需求到来,或者原油的需求需要进行更新调整,原来重构的结构能够帮助团队提升需求的变化的响应能力。

也是复杂的业务,清晰的代码设计所带来的复用和响应的能力的表现也就越强。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269