分享
 
 
 

像工匠一样进行重构--《Refactoring WorkBook》

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

像工匠一样进行重构, 让重构成为一门手艺.

Martin Flower的《Refactoring》其实更适合做一本关于重构的洗脑,宣言式的书,就像Kent Beck的《XP Explain》一样薄薄的就可以了。只可惜他却非常的厚。真正动手重构,我更喜欢《Refacoring WorkBook》,他以一个工匠的语气传授重构的手艺,,让重构从理论变为一门机械实在的手艺。

1.重构 Within Classes

1.1 大是罪

Long Method,Large Class,Long Parameter List, 一般通过度量工具找出来,还可以自己设定一个触发器,当度量结果超过某个限度时就报警. PMD可以实现这个功能, 但软件度量工具我更喜欢Metrics Reload, 一个IDEA的插件, 给出的度量信息很全面.

另外切忌为了度量的数字而重构。

Long Method当然是尝试Extract Method.

Large Class就要把类的职能分开几个域, 尝试拆出另一个Class或者SubClass

Long Parameter List 可以通过在方法内的变量用查询获得而不用由参数传入;

或者把某些参数组成一个对象.

1.2 重复也是罪

重复是30年前就被认为是不好的一样东西,表现在代码类似或者代码、接口不同而作用相近。

去除重复的方法也没什么特别,无非就是

Extract Method(同一个类)。有差异时,通过参数化达到共用。

Pull Up Method到父类(同一个父类)。有差异时,通过模板机制达到共用。

Class A调用Class B 或者 Extract Class C (两个完全无相干的类)

1.3 命名

中国程序员的英文本来就差, 要多参考Ofbiz,Comperie的命名, 尽快建立自己的项目字典,领域术语字典。

也幸亏,在工具辅助下,代码rename是最容易的重构。

1.4复杂条件

作者认为,即使现在Program最关注的是对象,以及对象间的关系了,但优质的内部代码依然重要,推荐《编程珠玑》和《Elements of Programing style》

化简复杂条件的基本有三个方法

1.通过!(A&B)==(!A)||(!B)化简

2.通过有意义的变量,函数代替条件表达式,比如

boolean isMidScore = (X>1000)&&(X<3000);

3.通过把一个if拆分开来执行,把guard clause放在前面

比如if(A||B)

do();

->if(A)

do();

if(B)

do();

又可以把2,3灵活组合,比如根据2,Extract出一个isRight()函数,根据3 isRight()

{

if(A)

return true;

if(B)

return true;

return false;

}

1.5 其他

死代码, 通过IDE工具探知并移除。小心有些框架代码是不能删除的。

Magic Number,当然是改为常量。如果Magic Number很多,可以用Map枚举类来存放.

除臭剂式的注释,为方法,变量改一个更适合的名字。如果注释是针对一个代码段的,可以Extract Method。当然,代码只能说明how, 不能说明why,更不能说明why not,这才是注释存在的地方。

2.重构 Between Classes

待续

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有