洪流学堂,让你快人几步。
本篇内容来自洪流读书会精选内容。
昨天我们解读了重构这个词怎么来的?今天我们来聊聊重构是什么、为什么要重构?
重构是什么、为什么要重构
我们先来举个例子。
现在,设想有一个戏剧演出团,演员们经常要去各种场合表演戏剧。通常客户会指定几出剧目,而剧团则根据观众人数及剧目类型来向客人收费。该团目前出演两种戏剧:悲剧和喜剧。给客户发出账单时,剧团还会根据到场观众的数量给出“观众量积分”优惠,下次客户再请剧团表演时可以使用积分获取折扣。
假设我们将剧目的数据和开出的账单都存储在JSON文件中,然后再创建一个简单的函数用于打印账单详情,这样几十行代码就可以搞定。
那么暂时满足了用户需求是否就可以宣告完成软件了?
如果接下来用户需要以HTML格式输出详单或者演员们将尝试表演的类型加上历史剧、田园剧、田园喜剧、田园史剧、历史悲剧或者田园历史悲剧等等。这将对戏剧场次的计费方式和积分的计算方式都产生影响。可以肯定的是,不管最终提出什么方案,用户一定会在短期内再次修改它。毕竟需求常常会不来则已,一来便接踵而至。
在这里我们强调一下,是需求的变化使重构变得必要。
如果你要给程序添加一个特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序,使其比较容易添加该特性,然后再进行添加。
一般来说,重构早期的主要动力是尝试理解代码如何工作。通常你需要先通读代码,找到自己的一些感觉,然后再通过重构将这些感觉从脑海中搬回到代码里。清晰的代码更容易理解,使你能够发现更深层次的设计问题,从而形成积极正向的反馈环。
既然我们谈论的是通过重构改善代码,那么什么样的代码才算好代码?
对此,程序员们有很多争论:
有人说傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码,才是优秀的程序员。
如果我们说代码关乎美学,其实代码是各花入各眼,没有好坏高低之分,那除了诉诸个人品味就没有任何客观事实的依据了吗?
于我而言,这并不关乎个人品味,而是有客观标准的,因为你的代码是要面向阅读者、使用者的。好代码就应该直截了当,好代码的检验标准就是人们是否能轻而易举的修改它。
我们都需要一个健康的身体,健康是创造一切生产力的基础,代码亦是如此。
一个健康的代码库能够最大限度的提升我们的生产力,支持我们以更快的速度、更低的成本为用户添加新特性、新功能。那么为了维系一个健康的代码库,就需要时刻留意现状与理想之间的差距,然后通过不断的重构不断接近这个理想,这就如同维持健美的身材需要不断的重塑自身的肌肉线条一样。
我们都知道在动感单车中坚持不掉队的关键在于跟随节奏,踩的每一下都压在节拍上。
那么在重构中,最重要的是什么?是节奏感!开展高效有序的重构,我关键的心得是:小步稳走反而能更快前进。
保持代码永远处于可工作状态的同时,以小步修改累积起来,也能大大改善系统的设计。当然每一小步的前进都需要遵循营地法则:保证你离开时的代码库一定比来时更健康,就像保证你的每一脚都踩在单车的脚蹬上。
小结
今天我们已经了解了重构就是在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构的一个过程。下次我将向大家介绍重构的原则。
我是大智,你的技术探路者,下次见!
别走!点赞,收藏哦!
好,你可以走了。
网友评论