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;


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 美团众包跑腿单物品太重怎么办 美团退款成功后 物品怎么办 win10电脑没有网络图标怎么办 电脑开机桌面什么都没有怎么办 xp桌面什么都没有了怎么办 手机下滑通知栏不见了怎么办 跑800米赶上月经怎么办 强迫症吃药没效怎么办 复读生档案丢了怎么办 大学退学重新高考学籍怎么办 玻尿酸鼻子宽了怎么办 被昆山市圆通快递公司骗怎么办 借壳上市后壳公司怎么办 盐城国有民办学校倒闭教师怎么办 联想复印机显示更换墨粉盒怎么办 襄垣县共公自行车卡怎么办 转南京江宁户口怎么办儿童医保 剑与家园鬼服怎么办 花生苗出现虫洞怎么办 被蝎子草扎到手怎么办 被蝎子草蛰了怎么办 螫麻子草扎了怎么办 苹果app没删除干净怎么办 字写的太潦草看不懂怎么办 肝内胆管结石疼怎么办 肝内胆管有结石怎么办 肝里胆管有结石怎么办 被信任的人算计你怎么办 卡罗拉1.8油耗高怎么办 请问09年途锐柴油版怎么办 油电混合没电了怎么办 前向运动精子3%怎么办 精子活力正常精子活率低怎么办? 精子形态正常率低怎么办 前向运动精子20%怎么办 不运动精子率高怎么办 前向运动精子少怎么办 精子前向运动力低怎么办 精子异常形态率高怎么办 精子正常率才1%怎么办 精子头部缺陷率高怎么办