JobPlus知识库 互联网 互联网+ 文章
给产品经理讲技术丨五分钟理解技术名词:重构

昨天中午吃完饭,听到一个小妹在跟同事吐槽:「开发太不给力了,这么简单的需求说下周才能体验,还搪塞我说这周他的主要任务是做什么「代码重构」。就会拿一些听不懂的技术名词当挡箭牌。」其他人也都点头称是。

听到这里我就坐不住了,一是妹子比较萌,咱不能错过这么好的一个搭讪机会,二是作为一个在IT搬砖界混迹多年的资深码农,为同行说句公道话也是义不容辞。

「大妹子,你这么说可就不对了哦,代码重构是软件开发过程中提高开发效率和质量的重要手段。」我顿了顿继续说到,「最近排需求的时候,开发是不是经常抱怨需求对当前的架构挑战太大,或者明明做了一个很小的功能,测试时却测出来很多bug,甚至一些功能没有变化的地方也出了问题,最终导致产品交付延期?」看着妹子吃惊的瞪着那水汪汪的大眼睛,料想她已深深折服于我料事如神手段。为了进一步加深在妹子心中的印象,我决定要穷尽毕生所学,让妹儿彻底明白什么是「重构」。

先举一个栗子:

隔壁老王原来家里有套平房,两室一厅,一个卧室改成了书房,两口和刚出生不久的儿子住在大卧室里,日子过的还算滋润。后来娃儿长大了,老两口就计划在平房上再盖一层,让儿子住在二楼,以后儿子结了婚也可以把二楼当婚房用(都是被高房价逼得啊)。又过了几年,儿子娶了媳妇。儿媳妇在二楼住了不多久,就开始抱怨二楼没有阳台,连个晒衣服的地儿都没有。于是老王两口请来设计师,准备再给二楼添个阳台。设计师看了说:「你们这个二楼本来就是在平房上加盖的,楼梯设计的不规范,上下楼不安全,而且原来的平房承重结构勉强能承担现在两层楼的重量,现在如果再从二楼外延出阳台,很可能超出承重系统的极限,一旦出现问题后果不堪设想。」看到老两口愁眉不展,设计师又提议说:「其实也不是没办法,只需要针对当前的承重结构重新设计,就可以在不改变当前房间布局的前提下大大加强房屋的承重能力,别说加个阳台,就是盖到三层也没问题!」老王闻言喜笑颜开,就让设计师出了新的设计图择吉日动工。不多久,房间承重结构的改造就完成了,之前设计不合理的水电走线也被重新梳理了一遍,上下楼梯也比以前安全了,最重要的是儿媳妇也得到了她的阳台。老王看着翻修后的小洋楼,心里盘算着啥时候把三楼盖起来给孙子住。然而,这一切,都得益于设计师对「承重系统」的「重构」(重新设计)。

开发初期

接了100个需求后

在软件开发过程中,每一款软件一开始都是经过精心设计,具有良好的结构。但随着需求的不断变更,之前的结构开始慢慢变得不适应。就像老王的房子中,本来是为平房设计的承重系统,后来却要承受二层楼和阳台的重量,这种变化可能是当初的设计者所始料未及。为了快速的完成需求,开发者可能会使用一些违背当前软件架构的方式实现功能,久而久之,这种「另类」的代码越来越多,导致软件之前的结构已经淹没在了这些杂乱无章的逻辑中,使得整个软件没有一个清晰的脉络,严重降低了代码的可读性和可维护性,一点小小的修改都有会造成不可预知的BUG产生。在这种情况下再进行大规模的需求开发,后果可能是灾难性的。

重构就是在保留现有功能的基础上,重新梳理软件中的代码结构,让原本杂乱无章的代码重新具有可读性、结构性和可扩展性,增加软件的开发效率,优化程序的性能。重构的范围可大可小,大到涉及整个产品的各个模块,小到一个函数(参阅《五分钟理解什么是面向对象》)。

到这里,我相信眼前的产品妹子已经被我言简意赅的解释彻底征服,于是趁热打铁地说:「所以,妹儿,开发不是在搪塞你,而是在准备为你提供更好的技术支持。」

只见妹子还是一脸吃惊的表情,对她旁边的同事轻声说:「这人是谁啊?」「不知道,可能是代码写多了,咱们快走吧,免得惹麻烦。」说罢,妹子们作鸟兽散,独留我屹立风中。。。。

PS:昨天世界上一共发生了两件大事,一个是我装逼未遂,另一个是「阿尔法狗」战胜了世界排名第二的围棋九段高手李世石。上帝造不出自己无法搬起的石头,人类却再一次造出了自己无法打败的人工智能。虽然「阿尔法狗」离实际应用尙远,但谁又能保证在不久的将来,人工智能不会像《机械姬》中描写的那样,利用人性的弱点完成自我的释放?如果你对人工智能有任何独到的见解或看法,欢迎在文章中留言或者直接回复公众号,让我们一齐探讨、分享。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
85人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序