重构是什么、为什么要重构

洪流学堂,让你快人几步。
本篇内容来自洪流读书会精选内容。

昨天我们解读了重构这个词怎么来的?今天我们来聊聊重构是什么、为什么要重构?

重构是什么、为什么要重构

我们先来举个例子。

现在,设想有一个戏剧演出团,演员们经常要去各种场合表演戏剧。通常客户会指定几出剧目,而剧团则根据观众人数及剧目类型来向客人收费。该团目前出演两种戏剧:悲剧和喜剧。给客户发出账单时,剧团还会根据到场观众的数量给出“观众量积分”优惠,下次客户再请剧团表演时可以使用积分获取折扣。

假设我们将剧目的数据和开出的账单都存储在JSON文件中,然后再创建一个简单的函数用于打印账单详情,这样几十行代码就可以搞定。

那么暂时满足了用户需求是否就可以宣告完成软件了?

如果接下来用户需要以HTML格式输出详单或者演员们将尝试表演的类型加上历史剧、田园剧、田园喜剧、田园史剧、历史悲剧或者田园历史悲剧等等。这将对戏剧场次的计费方式和积分的计算方式都产生影响。可以肯定的是,不管最终提出什么方案,用户一定会在短期内再次修改它。毕竟需求常常会不来则已,一来便接踵而至。

在这里我们强调一下,是需求的变化使重构变得必要。

如果你要给程序添加一个特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序,使其比较容易添加该特性,然后再进行添加。

一般来说,重构早期的主要动力是尝试理解代码如何工作。通常你需要先通读代码,找到自己的一些感觉,然后再通过重构将这些感觉从脑海中搬回到代码里。清晰的代码更容易理解,使你能够发现更深层次的设计问题,从而形成积极正向的反馈环。

既然我们谈论的是通过重构改善代码,那么什么样的代码才算好代码?
对此,程序员们有很多争论:
有人说傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码,才是优秀的程序员。

如果我们说代码关乎美学,其实代码是各花入各眼,没有好坏高低之分,那除了诉诸个人品味就没有任何客观事实的依据了吗?

于我而言,这并不关乎个人品味,而是有客观标准的,因为你的代码是要面向阅读者、使用者的。好代码就应该直截了当,好代码的检验标准就是人们是否能轻而易举的修改它。

我们都需要一个健康的身体,健康是创造一切生产力的基础,代码亦是如此。

一个健康的代码库能够最大限度的提升我们的生产力,支持我们以更快的速度、更低的成本为用户添加新特性、新功能。那么为了维系一个健康的代码库,就需要时刻留意现状与理想之间的差距,然后通过不断的重构不断接近这个理想,这就如同维持健美的身材需要不断的重塑自身的肌肉线条一样。

我们都知道在动感单车中坚持不掉队的关键在于跟随节奏,踩的每一下都压在节拍上。
那么在重构中,最重要的是什么?是节奏感!开展高效有序的重构,我关键的心得是:小步稳走反而能更快前进。

保持代码永远处于可工作状态的同时,以小步修改累积起来,也能大大改善系统的设计。当然每一小步的前进都需要遵循营地法则:保证你离开时的代码库一定比来时更健康,就像保证你的每一脚都踩在单车的脚蹬上。

小结

今天我们已经了解了重构就是在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构的一个过程。下次我将向大家介绍重构的原则。

扩展阅读

【扩展学习】洪流学堂公众号回复读书会可以阅读本系列所有文章,还有更多精选内容等着你!

我是大智(vx:zhz11235),你的技术探路者,下次见!

别走!点赞收藏哦!

好,你可以走了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大智_Unity玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值