代码重构之函数的重构

1.引言

最近刚换公司,在公司接手了一个项目,主管叫我重构。我打开代码一看,尼玛这是代码吗。包名,变量名全部是用大写拼音开头,网络请求还是用的httpclient。一个类,一个函数代码能搞几百行。自己的代码写的也是不行,借着这个机会买了一本书《重构改善既有代码的设计》然后看了下。于是做一下笔记。
那本书看了下,的确很有用,但是有些重构手法感觉不重要,在这个博客中就不做记载。主要把平时用到的记录下。

2.正题

不管是android stuido 还是idea,都提供了重构的工具。工具栏"Refactor"就是所有重构的手法。下面我就说几个自我感觉常用的。


2.1 Extract Method(提炼函数:注意方法内的变量)

一个函数中的代码行数太多,明显就是不符合规范的代码按照《重构改善既有代码的设计》作者的思想。尽量将大函数化分成几个小方法。我个人觉得这个观点有点问题。假如方法太过多,而且太分散,不利于代码的阅读。大函数肯定要分。不过分多少个函数,这个需要自己把握。
假如提炼的函数,需要用到另外的变量,可以将变量作为方法的参数。


2.2 Inline (内联)

内联作用于函数内部,减少不必要的代码。

代码重构之函数的重构_第1张图片
demo.gif

2.3 三目表达式

减少不必要的代码,使方法更加紧促,简洁。

代码重构之函数的重构_第2张图片
demo1.gif

2.4 replace temp with query(以查询取代临时变量)

这个手法主要是对临时变量,进行重构。重构的场景是 "变量" =“表达式”。这时候就可以将表达式通过 replace temp with query 抽出来。好处个人觉得是:其他方法用到这个“表达式”的时候可以直接调用。

代码重构之函数的重构_第3张图片
demo3.gif

2.5remove assignments to parameters(移除对参数的赋值)

java按值传递方式。假如将一个引用作为参数,更改引用的内容。极有可能出错。remove assignments to parameters 就是建立一个变量接受引用对象的值,这样操作都是操作变量,对引用对象的值 没得影响。

2.6substitute algorithm(替换算法)

android里面有一个情节很常见。有三个imageview,有三个图片路径。我之前写的代码是这样。

代码重构之函数的重构_第4张图片
demo4.png

这种写法虽然可以实现,但是不是最简单的。改良之后的算法

代码重构之函数的重构_第5张图片
demo5.png

代码与之前相比行数大大减少了一倍。

综合例子:
这是以前学习java的时候经常写的代码:

代码重构之函数的重构_第6张图片
demo6.png

学习了代码重构之后的写法:

代码重构之函数的重构_第7张图片
demo7.gif

今天就写到这,后续还有移动对象的重构手法。今天这个是第一部分。

你可能感兴趣的:(代码重构之函数的重构)