程式碼改造實錄--從較巨集觀角度來考慮邏輯
阿新 • • 發佈:2020-08-10
原來的程式碼:
1 if (makeAnAppointment.size() > 0) { 2 3 // 總號數-待支付號數-已確定號數 4 int make = plus.getPlusNumber() - makeAnAppointment.size() - plus.getMakeAnAppointment(); 5 for (MakeAnAppointment ma : makeAnAppointment) { 6 if(ma.getPatientId() == patientId) { // 存在個人未支付的號 7 8 long s1 = (System.currentTimeMillis() - ma.getCreateTime()) / 60000; 9 if (s1 <= 60L) { 10 if (make == 0) { 11 orderPlusVo.setStatus(1); 12 continue; 13 } 14 orderPlusVo.setStatus(make > 0 ? 1 : 0); 15 continue; 16 } 17 make++; 18 continue; 19 } 20 orderPlusVo.setStatus(make > 0 ? 1 : 0);21 } 22 } else { 23 orderPlusVo.setStatus(plus.getPlusNumber() - plus.getMakeAnAppointment() > 0 ? 1 : 0); 24 }
改造後代碼:
1 // 總號數-待支付號數-已確定號數 2 int make = plus.getPlusNumber() - plus.getMakeAnAppointment() - makeAnAppointment.size(); 3 if (make > 0) { 4 orderPlusVo.setStatus(Globals.REMAINING_HAVE); 5 } else if (makeAnAppointment.size() > 0) { 6 for (MakeAnAppointment ma : makeAnAppointment) { 7 if (ma.getPatientId().equals(patientId) 8 && System.currentTimeMillis() <= ma.getCreateTime() + 1000 * 60 * 60) { 9 orderPlusVo.setStatus(Globals.REMAINING_HAVE); 10 } 11 } 12 } else { 13 orderPlusVo.setStatus(Globals.REMAINING_NONE); 14 }
這兩段程式碼是實現個人是否可以預約號的功能,原來的程式碼先從預約列表的個數分0和大於0兩種情況,在預約列表大於0的情況下再去檢視是否含有個人未支付且支付未過期的預約資訊,但邏輯混亂,讓人讀起來一頭霧水。
下面的程式碼就清晰了很多,首先看是否還有未被預約的號,沒有的情況下看是否含有自己預約未支付且在支付期限內的號,還沒有就是真的沒有了。