首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java复建示例三(转载)

2012-12-26 
Java重构示例三(转载)关键字:Java?程序设计?重构?示例?原则?优化?技巧?方法序言本文通过Java示例代码片段

Java重构示例三(转载)
关键字:Java?程序设计?重构?示例?原则?优化?技巧?方法

序言

本文通过Java示例代码片段展示了常用重构原则和技巧,供初级开发人员参考。精致的代码能够清楚传达作者的意图,精致的代码是最好的注释,精致的代码非常容易维护和扩展。程序员阅读精致的代码如同大众欣赏优美的散文一样享受。

11?使方法通用化 11.1?重构前

?

public?DayPart[]?sortDayPart()?{

??if?(dayParts?==?null?||?dayParts.length?==?0)?{

????return?dayParts;

??}

??List<DayPart>?dayPartList?=?Arrays.asList(dayParts);

?

??Collections.sort(dayPartList,?new?Comparator<DayPart>()?{

????public?int?compare(DayPart?o1,?DayPart?o2)?{

??????if?(o1.getIndex()?<?o2.getIndex())?{

????????return?-1;

??????}?else?if?(o1.getIndex()?>?o2.getIndex())?{

????????return?1;

??????}?else?{

????????return?0;

??????}

????}

??});

?

??return?dayPartList.toArray(new?DayPart[dayPartList.size()]);

}

?

11.2?重构后

?

public?DayPart[]?sortDayPart()?{

??return?this.sortDayPart(SortMode.ASC);

}

?

public?DayPart[]?sortDayPart(final?SortMode?sortMode)?{

??if?(dayParts?==?null?||?dayParts.length?==?0)?{

????return?dayParts;

??}

??List<DayPart>?dayPartList?=?Arrays.asList(dayParts);

?

??Collections.sort(dayPartList,?new?Comparator<DayPart>()?{

????public?int?compare(DayPart?o1,?DayPart?o2)?{

??????if?(o1.getIndex()?<?o2.getIndex())?{

????????return?sortMode.isAsc()???-1?:?1;

??????}?else?if?(o1.getIndex()?>?o2.getIndex())?{

????????return?sortMode.isAsc()???1?:?-1;

??????}?else?{

????????return?0;

??????}

????}

??});

?

??return?dayPartList.toArray(new?DayPart[dayPartList.size()]);

}

?

12?避免空语句 12.1?重构前

?

public?int?getRemainMinutes(int?hour,?int?minute)?{

??int?startHour?=?fromHour;

??int?startMinute?=?fromMinute;

??if?(this.fromAfterEqual(hour,?minute))?{

????//?------from-------position------to--------

????;//use?default?init?value

??}?else?if?(this.toAfterEqual(hour,?minute))?{

????//?------from-------position------to--------

????startHour?=?hour;

????startMinute?=?minute;

??}?else?{

????//?--------from-------to--------position-------

????startHour?=?toHour;

????startMinute?=?toMinute;

??}

?

??return?this.getMinutes(startHour,?startMinute,?toHour,?toMinute);

}

?

12.2?重构后

?

public?int?getRemainMinutes(int?hour,?int?minute)?{

??//?--------from-------to--------position-------

??int?startHour?=?toHour;

??int?startMinute?=?toMinute;

?

??if?(this.fromAfterEqual(hour,?minute))?{

????//?------position------from-------to--------

????startHour?=?fromHour;

????startMinute?=?fromMinute;

??}?else?if?(this.toAfterEqual(hour,?minute))?{

????//?------from-------position------to--------

????startHour?=?hour;

????startMinute?=?minute;

??}

?

??return?this.getMinutes(startHour,?startMinute,?toHour,?toMinute);

}

?

13?公共逻辑后置 13.1?重构前

?

public?int?getRemainMinutes(int?hour,?int?minute)?{

??if?(this.fromAfterEqual(hour,?minute))?{

????//?------position------from-------to--------

????return?(toHour?*?60?+?toMinute)?-?(fromHour?*?60?+?fromMinute);

??}?else?if?(this.toAfterEqual(hour,?minute))?{

????//?------from-------position------to--------

????return?(toHour?*?60?+?toMinute)?-?(hour?*?60?+?minute);

??}

??else?{

????//?--------from-------to--------position-------

????return?0;?//(toHour?*?60?+?toMinute)?-?(toHour?*?60?+?toMinute);

??}

}

?

13.2?重构后

?

private?int?getMinutes(int?startHour,?int?startMinute,?int?endHour,

int?endMinute)?{

??int?minutes?=?0;

??minutes?=?(endHour?*?60?+?endMinute)?-?(startHour?*?60?+?startMinute);

?

??return?minutes;

}

?

public?int?getRemainMinutes(int?hour,?int?minute)?{

??//?--------from-------to--------position-------

??int?startHour?=?toHour;

??int?startMinute?=?toMinute;

?

??if?(this.fromAfterEqual(hour,?minute))?{

????//?------position------from-------to--------

????startHour?=?fromHour;

????startMinute?=?fromMinute;

??}?else?if?(this.toAfterEqual(hour,?minute))?{

????//?------from-------position------to--------

????startHour?=?hour;

????startMinute?=?minute;

??}

?

??return?this.getMinutes(startHour,?startMinute,?toHour,?toMinute);

}

?

14?公共逻辑前置 14.1?重构前

?

private?StringBuffer?transformDialect(String?intPart,?String?fracPart)?{

??StringBuffer?cn?=?new?StringBuffer();

?

??if?(isIntegerZero(intPart))?{

????return?cn;

??}

?

??if?(this.isFractionZero(fracPart))?{

//?无小数,增加附加信息(整)

????cn.append("元").append("整");

??}?else?{

//?有小数,增加附加信息(零)

????cn.append("元").append("零");

??}

?

??return?cn;

}

?

14.2?重构后

?

private?StringBuffer?transformDialect(String?intPart,?String?fracPart)?{

??StringBuffer?cn?=?new?StringBuffer();

?

??if?(isIntegerZero(intPart))?{

????return?cn;

??}

?

??cn.append("元");

??if?(this.isFractionZero(fracPart))?{

//?无小数,增加附加信息(整)

????cn.append("整");

??}?else?{

//?有小数,增加附加信息(零)

????cn.append("零");

??}

?

??return?cn;

}

?

15?使用清晰的布尔型变量替换逻辑表达式 15.1?重构前

?

public?boolean?tailGreatHead(int?headHour,?int?headMinute,?int?tailHour,

int?tailMinute,?boolean?includeEqual)?{

?

??return?((headHour?<?tailHour)?||

?((headHour?==?tailHour)?&&

???????????((headMinute?<?tailMinute)?||?includeEqual?&&?(headMinute?==?tailMinute))));

}

?

?

15.2?重构后

?

public?boolean?tailGreatHead(int?headHour,?int?headMinute,?int?tailHour,

int?tailMinute,?boolean?includeEqual)?{

??boolean?tailGreatHeadHour?=?(headHour?<?tailHour);

??boolean?tailEqualHeadHour?=?(headHour?==?tailHour);

??boolean?tailGreatHeadMinute?=?(headMinute?<?tailMinute);

??boolean?tailEqualHeadMinute?=?(headMinute?==?tailMinute);

?

??boolean?tailGreatEqualHeadMinute?=?tailGreatHeadMinute?||?includeEqual

&&?tailEqualHeadMinute;

?

??return?(tailGreatHeadHour?||?(tailEqualHeadHour?&&?tailGreatEqualHeadMinute));

}

?

?

<!--EndFragment-->

?

源地址:http://passport.baidu.com/?business&aid=6&un=%B2%DC%CB%C9%C7%E0#7

热点排行