重构手法之——Extract Method

本文探讨了通过重构将代码片段提炼为独立函数的方法,旨在提高代码的可读性和复用性。介绍了如何选择合适的代码块进行提炼,以及提炼过程中需要注意的问题,如局部变量的处理等。

概述

你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途。

以后的笔记要多些自己的理解。而不单单是对文中内容的摘要。

动机

适用情况:主要是为了提高可理解性。1 )函数过长; 2 )需要注释才能够理解——这两种情况下可以考虑使用此重构手法。

目标:简短而又有良好命名的函数。

好处:1 )函数复用性好。 2 )高层函数更容易理解(就像读注释一样阅读代码。但是,前提是函数有良好的命名)。 3 覆写更容易(??什么意思,是否是继承的覆写)。

前提条件:函数要有良好的命名,否则,使用此重构手法的效果会打折扣。

如何决定函数的长度:没有标准。 关键在于函数名和函数本体间的语义距离 (好好理解一下)。如果提炼代码可以使函数更清晰,则,即便是函数名比代码长度还长,也无所谓。

作法

这个作法有一个比较困难的地方,就是对局部变量的处理。

1、 构造一个新函数,并且以这个函数的意图命名(以做什么命名,而非怎么做命名)。如果提炼代码能更好的昭示代码意图,即便是一行代码,或这有一个函数调用,你也要提炼它。但如果你没有良好的命名,则不宜轻举妄动。

2、 将源代码拷贝到目标函数,处理因为拷贝代码需要处理的变量。

3、 在原函数中用此目标函数代替。

4、 编译,测试。

局部变量(包括原函数的参数和原函数的临时变量)的处理方法:

1、 只读取其值,可以作为函数参数。

2、 对局部变量赋值:分两种情况:1 )只在被提炼码中使用,则整个提取出来。 2 )如果内外都用通到,则可以让新的函数返回其值。 3 )如果变量在原函数中被复制,则可以作为参数传递进去。

一个函数最好一个返回值。多个返回值可以设定多个函数。

如果临时变量时此重构无法进行,则可以先使用其他的重构手法减少临时变量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值