重构代码 02 构建方法

可能绝大多数需要重构的地方就是因为方法太长,太长的方法往往包含了太多的信息,从而导致代码的逻辑太混乱或者说太复杂。

当你看着一段代码,然后发现它很长,或者你必须要看comments才能理解它的意思的话,那么就重构它,将代码变成小块。之所以要把代码变成小块,原因一方面是为了避免复杂的逻辑,另一方面是这样可以增加别的方法用到它们的机会,从而增大代码的重用率。但是注意,方法的名字一定要取得合理,容易理解,这一点尤其要引起注意。 有时候即使方法的名称可能比方法的内容还长,但是只要能够让代码整体看起来更加清晰,就果断地将其分拆开来。

有可能你想提取一段代码出来新建一个方法,但是如果代码很短,然后又想不出非常好的名字的话,那么就最好别提取,再说一次,名字十分重要。

重构的主要大意是希望引入间接,从而是代码细化,逻辑更加清晰。但是又回到"度"的问题上了,什么东西都有一个度,不要过度细分才好。


局部变量

在提取方法的时候,涉及到局部变量。加入局部变量只和要提取出来的方法有关的话,直接就和其它代码一起提取出去就是了。但是,如果局部变量不止被提取的代码要使用,那么就稍微复杂一点了。这个也分成2种情况,第一种,提取的部分在其它要使用的部分的前面。那么就在里面做更改就是了,问题不大;另外一种,别的代码先使用,然后再在被提取的代码里面使用,这个时候就要把其它部分的代码写成一个getter,把局部变量封装进去,最后返回该局部变量的值。在被提取出来的代码中,使用getter来获取该值。

总的来说要尽可能地减少局部变量的使用,转而使用方法将它们封装好,一个方法返回一个值。注意参数之间的关系,可以的话,也减少参数的数量。有时候局部变量可能只是使用了一次,被一个简单的表达式赋值,那么就去掉这个局部变量,直接使用那么简单表达式代替就行了。

但是另外一些情况就要鼓励使用局部变量了,假如你要做某个判断,if(XXXYYYZZZ),如XXXYYYZZZ本身是一个表达式的话,最好将其放在一个语义明确的局部变量中,这样别人才更加容易理解一些。还有一种情况,比如你有一个返回值,这个值由几部分组成,每个部分都是一个表达式,那么你最好先将表达式赋值给局部变量,然后再由局部变量组成表达式返回,这样语义要清晰得多。

最后还有一种更加优秀的选择就是,将这个些个局部变量变成方法的返回值,这样就还是可以避免局部变量的使用。

不同的局部变量具有不同的功用,如果只是简单的赋值,而不是在 一个循环之类的东西里面,不要将不同类型的值赋给同一个局部变量。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值