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重构示例一
最新推荐文章于 2020-06-12 21:43:03 发布