判斷程式的條件

寫程式最重要的是判斷各種條件, 不過要如何判斷程式的條件, 其實也是一個條件.

因為產線有些資料需要判斷是否有異常, 會以時間判斷, 而上午 00:00~09:59 , 在某些資料檔顯示 0:00~9:59 , 在有些資料檔卻是 00:00~09:59 , 所以程式要比對時, 就需要加工處理. 但是這個"加工"過程, 在批次檔內無法處理, 所以只能"分別判斷".

這個"分別判斷", 就是調整程式上的選擇, 前一版的程式, 是用目前時間 %TIME:~0,1% 是否為 0 (00:00~09:59), 若是 0 , 則比對資料檔時, 就用 空白+%TIME:~1,3% ( 0:00~ 9:59)來比對, 如果 %TIME:~0,1% 不是 0 , 比對資料就用 %TIME:~0,4% (10:00~23:59)來比對.

1. 目前時間的十位數是否為 0 , 若是 -> 2 , 若不是 -> 3 .
2. 將十位數用空白取代, 比對資料檔是否有遺漏, 有遺漏則重新啟動撈取程式 -> 結束.
3. 比對資料檔是否有遺漏, 有遺漏則重新啟動撈取程式 -> 結束.

這幾天覺得這樣依目前時間來決定哪些動作, 後續有一些程式都是雷同的. 而有個想法: 原本考慮是因為最後有共同的結束動作, 才會先分成兩部分, 各別跑完再結束, 而批次檔可以"提早離開(exit)", 有了這個想法, 就回頭檢視比對的條件, "是否需要依不同時間比對"?

思考的結果還是需要, 但可以兩種判斷都執行一次, 只要最後 AND 的結果符合就好, 不符合就可以直接"提早離開(exit)", 程式碼就改成:

1. 比對資料檔是否有遺漏, 沒有遺漏則結束.
2. 將十位數用空白取代, 比對資料檔是否有遺漏, 沒有遺漏則結束.
(通過這兩道表示有遺漏)
3.  判斷目前程式是否執行中, 若在執行中, 則強制停止.
4. 啟動程式.

這樣雖然效能低一點點, 但檢查的項目其實變少, 程式也變短了.
所以很多程式的寫法, 是有許多變化, 而就當下的效率, 去找出合適的做法.

https://www.linkedin.com/pulse/%E5%88%A4%E6%96%B7%E7%A8%8B%E5%BC%8F%E7%9A%84%E6%A2%9D%E4%BB%B6-%E8%90%8A%E5%A7%86-%E5%8F%B2/?published=t