Eclipse重构——写在今日日落,期待明日日出

《重构——改善既有代码》

剩下还有一些重构手法,在本blog系列《Eclipse重构——总章》中有提及,这些重构可以应用基本的Eclipse重构菜单,按照Martin Flower的建议步骤,亦步亦趋的完成。下面只是再特别强调几个。(更多的Eclipse重构菜单的使用,可以参考点击打开链接

1. [Introduce Factory],Eclipse中有直接对应菜单, 可以直接将构造函数用静态方法封装,做成简单工厂形式,同时会自动将原来直接使用new xxx的代码替换为create_xxx()。这手法与[Encapsulate Field]一样,  简单却是基础。

在应用[Replace Typecode with Subclass]时,该方法就是第一步,然后简单引入switch语句,根据类型码,创建对应的子类。这一步是很关键的,后面的都是水到渠成的事情。

2. [Push Down] ,[Push Up]

两者在Eclipse Refactor菜单中都有直接对应选项,这里友情提示:其中的[preview]选项,可以控制选择具体对哪些类进行操作。

例如,有时候只有部分子类需要push down(重写父类方法),这时就可以在[preview]选项中控制。

3. [Replace Typecode with State/Strategy ] 

这个重构是其他基本重构操作的组合,关键点在于

a.  [Ecapsulate Field],将 记录当前typecode的成员变量封装起来,得到get /set

b.  将各类型码的定义,复制到State/Strategy基类中,同时 在该基类中实现setTypecode( <typecode>), 一般是简单的switch case形式。

c.  在各派类中实现getTypecode().  

接下来,随意替换原类中的类型码,以及进行其他重构。

abstract class PermissionState {
	public final static String REQUESTED = "REQUESTED";
	public final static String CLAIMED = "CLAIMED";
	
	public abstract String getState() ;  // override by subclass
	public PermissionState setState(String state) { //switch REQUESTED, CLAIMED 
		switch(state) {
		case REQUESTED:
			return new Requested();
		case CLAIMED:
			return new Claimed();
		default:
			throw new RuntimeException("type error");
		}
	}
}



写在最后,也应作为最初(只是当初忘了,直到暮然回首,才。。。)

为什么要使用Eclipse的重构菜单

长长的一句话: 虽然你可以手工改变代码中的某个元素,但是这样不能自动更新所有引用它们的地方,你必须逐条手工替换,而结果往往是漏掉一个或者改错一个。Eclipse等工具提供的菜单正是提供了智能的自动更新的功能。


最后承应标题,完成了纳米级的修改,下一步我们向微型结构出发。下一个系列将是简单的设计模式的讲解。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值