分享
 
 
 

JBuilder2005实现重构之分布式重构

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

由于软件工程的复杂性,一个大型的软件经常被切割成不同的子软件模块,并由不同的团队承担。假设一个大型的软件分为三个子模块:

A模块:底层处理类模块。

B模块:高层业务模块1。

C模块:高层业务模块2。

A模块作为底层的模块,会被B和C模块调用,但因为A模块由单独的团队开发(在JBuilder中表现为单独的工程),A模块的重构仅在当前工程中进行。JBuilder会记录重构轨迹,并答应你通过JAR档案包含这些重构的记录,当B及C模块工程通过工程类库重新引入A的JAR档案文件时,可以将在A工程中的重构应用于B及C模块工程。这种重构,解决了关联工程间的重构问题,称为分布式重构。

为了演示分布式重构,我们重新创建了一个新的工程common_lib,开发一个DateUtils类:

代码清单 21 DateUtils类

1. package common_lib;

2. public class DateUtils {

3. public static String getNowTime()

4. {

5. return ""+(new java.util.Date());

6. }

7. }

将common_lib工程打成common_lib.jar包输出,并在myrefactor工程目录下创建一个extralib子文件夹,将common_lib.jar拷贝到这个文件夹中,在工程扩展类库中引用这个JAR包。

在myrefactor中新建一个Distribute类,引用common_lib.jar中的DateUtils.getNowTime(),其代码如下所示:

代码清单 22 在myrefactor工程中引用common_lib工程的类

1. package myrefactor ;

2. import common_lib.DateUtils;

3. public class Distribute

4. {

5. public void PRintCurrTime()

6. {

7. System.out.println(DateUtils.getNowTime()) ;

8. }

9. }

过了一段时间,common_lib工程的负责人对DateUtils.getNowTime()方法名进行重构,将其更名为getCurrTime()。通过Refactor-Refactoring History...调出Refactoring History对话框,如下图所示:

图 30 重构历史记录

对话框中列出了当前工程所有重构历史记录,也许你不希望将所有的重构都分发出去,那么你可以通过Remove按钮删除那些重构记录。

为了这个方法重命名重构分发到引用了工程的其他工程中,需要在打包时包括重构的信息。

假如common_lib工程资源树中已经有了一个打包节点,仅需右击该节点在弹出菜单中选择Properties更改打包的设置即可,在弹出的Properties for ‘Archive’选择Refactoring设置页,如下图所示:

图 31

在档案文件中包含重构记录

重新打包生成common_lib.jar档案文件,将这个档案文件覆盖<myrefactor工程目录/extralib/common_lib.jar。

打开myrefactor.jpx工程,通过Refactor-Distributed Refactorings...打开Distributed Refactorings对话框,切换到Pending Refactorings标签页,如下图所示:

图 32 未决的重构列表

由于我们在common_lib工程中对DateUtils类的getNowTime()重构为getCurrTime(),所以列表中仅中一条记录,记录简要描述了重构的变化。

注重:

假如你在打开工程的同时覆盖common_lib.jar,Distributed Refactorings对话框的Pending Refactorings标签页中并不会列出未决重构项,此时,你需要关闭并重启myrefactor.jpx工程。

在列表中选择这条未决的重构记录,点击Apply应用这个重构,Distribute类的调用被更改过来:

代码清单 23 应用分式重构后的Distribute类

1. …

2. public class Distribute

3. {

4. public void printCurrTime()

5. {

6. System.out.println(DateUtils.getCurrTime()) ;

7. }

8. }

你也可以通过ErrorInsight应用分布式的重构:在工程扩展类型被的API被更改后,引用到发生重构类的当前工程类的结构窗格会出现一个 图标,右击这个图标,在弹出的菜单中选择重构修复菜单项,如这个Distribute类,我们可以选择Refactor Method,弹出如下的对话框:

图 33 通过ErrorInsight进行重构修复的对话框

点击OK,JBuilder不但会在当前类中应用这个方法的重构,还会在查找当前工程中其他引用这getNowTime()方法的地方,一并重构。

切换到

图 32的Completed Refactorings标签页中将列出所有完成的重构项。

总结

有了重构,就应当尽量少用替换功能了,重构保证了更改的安全性和一致性。有了JBuilder重构功能的支持,对工程进行代码重构有如行云流水,一气呵成。重构不是阶段性的工作,当你一发现代码队伍阵脚不齐,或说闻到代码的坏味道时,就应该进行重构了。即使你的工程已经被其他工程当成API使用,也不必担心,JBuilder分布式重构的功能使开发伙伴团队只需要少许的工作,就可以保持代码的一致性了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有