Replace Method with Method Object(以函数对象去掉函数)

本文介绍了重构技巧——使用函数对象替换大型函数,以提高代码可读性。通过创建新类,保存源对象和函数参数,将原函数代码迁移至新类的compute()方法中,从而实现函数的拆解。重构后,可以更方便地对compute()进行进一步的Method Extracting操作。
摘要由CSDN通过智能技术生成

动机

小型函数优美动人。只要将相对独立的代码从大型函数中提炼出来,就可以大大提高代码的可读性。但是,局部变量的存在会增加函数分解难度。Replace Temp with Query可以帮助你减轻这一负担,但有时候你会发现根本无法拆解一个需要拆解的函数。这种情况下,你应该把手伸进工具箱的深处。祭出函数对象这件法宝。

做法

  1. 建立一个新类,根据待处理函数的用途,为这个类命名。
  2. 在新类中建立一个final字段,用以保存原先大型函数所在的对象。我们将这个字段称为“源对象”。同时,针对原函数的每一个临时变量和每一个参数,在新类中建立一个对应的字段保存中。
  3. 在新类中建立一个构造函数,接受源对象及原函数的所有参数作为参数。
  4. 在新类中建立一个compute()函数。
  5. 将原函数的代码复制到compute()函数中。如果需要调用源对象的任何函数,请通过源对象字段调用。
  6. 编译。
  7. 将旧函数的函数本体替换为这样一条语句:“创建上述新类的一个新对象,而后调用其中的compute()函数“。

范例

Class Account
	int gamma(int inputVal, int quantity, int yearToDate) {
   
		int importantValue1 = (inputVal * quantity) + delta();
		int importantValue2 = (inputVal * yearToDate) + 100;
		if ((yearToDate - importantValue1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值