Java重构示例一
来源:互联网 发布:农村淘宝佣金扣除查看 编辑:程序博客网 时间:2024/04/29 06:17
Java重构示例一
本文通过Java示例代码片段展示了常用重构原则和技巧,供初级开发人员参考。精致的代码能够清楚传达作者的意图,精致的代码是最好的注释,精致的代码非常容易维护和扩展。程序员阅读精致的代码如同大众欣赏优美的散文一样享受。
1 尽量简洁
1.1 重构前
if ( flag == 1 ){
return true;
}
else{
return false;
}
1.2 重构后
return flag == 1;
2 使用三位运算符
2.1 重构前
if ( "Male".equals(gender) ) {
return "Mr.";
}
else{
return "Mrs.";
}
2.2 重构后
return "Male".equals(gender) ? "Mr." : "Mrs.";
3 使用常量替换硬编码
3.1 重构前
for (int i = 0; i < 12; i++) {
this.getDays(i);
//skip...
}
3.2 重构后
int YEAR_MONTHS = 12;
for (int month = 0; month < Month.YEAR_MONTHS; month++) {
this.getDays(month);
//skip...
}
4 使用方法替换反复出现的表达式
4.1 重构前
public boolean isStartAfter(Date date) {
Calendar calendar = BusinessCalendar.getCalendar();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
return ( (hour<fromHour)
|| ( (hour==fromHour)
&& (minute<=fromMinute)
)
);
}
public boolean includes(Date date) {
Calendar calendar = BusinessCalendar.getCalendar();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
return ( ( (fromHour<hour)
|| ( (fromHour==hour)
&& (fromMinute<=minute)
)
) &&
( (hour<toHour)
|| ( (hour==toHour)
&& (minute<=toMinute)
)
)
);
}
4.2 重构后
private 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));
}
private boolean tailGreatHead(int headHour, int headMinute, int tailHour,
int tailMinute) {
return tailGreatHead(headHour, headMinute, tailHour, tailMinute, false);
}
private boolean tailGreatEqualHead(int headHour, int headMinute,
int tailHour, int tailMinute) {
return tailGreatHead(headHour, headMinute, tailHour, tailMinute, true);
}
public boolean isStartAfter(Date date) {
Calendar calendar = BusinessCalendar.getCalendar();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
return this.tailGreatEqualHead(hour, minute, fromHour, fromMinute);
}
public boolean includes(Date date) {
Calendar calendar = BusinessCalendar.getCalendar();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
return this.tailGreatEqualHead(fromHour, fromMinute, hour, minute) &&
this.tailGreatEqualHead(hour, minute, toHour, toMinute);
}
5 及早结束非正常逻辑
5.1 重构前
int count = 0;
if(taskList != null && !taskList.isEmpty()){
//skip...
return count;
}
else {
return count;
}
5.2 重构后
int count = 0;
if(taskList == null || taskList.isEmpty()){
return 0;
}
//skip...
return count;
- Java重构示例一
- Java重构示例二
- Java重构示例四
- Java重构示例三
- Java重构示例五
- java重构(一)
- java HashSet去重示例
- 重构示例_01
- Wordpress 插件示例之二-对示例一的重构
- LAMP开发精要(4):Wordpress 插件示例之二-对示例一的重构
- Java设计模式 -- 基本原则(重构示例)
- 重拾Java(一)
- java 跳转与重定向方法示例
- 重学java(一)
- 【重拾Effective Java】一
- java回炉重造(一)
- 重拾Java(一)
- java设计模式示例一
- fedora安装mplayer
- 以编程方式使用 Word 中的内置对话框
- Fedora17设置终端快捷键 和 桌面快捷方式
- Linux下的Eclipse 3.7 紧凑布局样式美化
- JAVA获取当前工程路径(非web工程)
- Java重构示例一
- Java重构示例二
- difference between java, c++
- Java重构示例四
- Java重构示例三
- 客户端 用不用 bind 的区别
- Java重构示例五
- C++之四书五经(上) <转>
- Hadoop中文件读写(Java) <转>