1. 程式人生 > 實用技巧 >程式碼改造實錄--從較巨集觀角度來考慮邏輯

程式碼改造實錄--從較巨集觀角度來考慮邏輯

原來的程式碼:

 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的情況下再去檢視是否含有個人未支付且支付未過期的預約資訊,但邏輯混亂,讓人讀起來一頭霧水。

下面的程式碼就清晰了很多,首先看是否還有未被預約的號,沒有的情況下看是否含有自己預約未支付且在支付期限內的號,還沒有就是真的沒有了。