我已經練習了Sandro Mancuso銀行Kata
我的目標是練習TDD的外部 +古典主義者組合(Manuel Rivero的想法)
跟踪使用git提交的時間。
我已經實現了安全轉移的功能:可以將帳戶配置為請求代碼(例如,OTP)以驗證電匯傳輸,這兩種傳輸(例如,大多數銀行都有此)作為傳入。
我已經研究了保存酸性特性的方法,而不是選擇最終一致的系統。
作為帳戶類的參數:代碼
這是最簡單的方法:取決於決定類行為的參數類型。
作為狀態機:代碼
將狀態和過渡配置為轉移類的內部/外部部分,因此使其更加通用和防止未來(Yagni?)
可以使用來自普通類的繼承(在這種情況下,轉移)或使用包裝器(state <>)表示當前狀態來表示這。對於前者,有生產代碼。對於後者,實施狀態機庫的側面étude(使用汽車 +其工廠作為域)
在實施中,它的類型安全性較低,使用此實現不太舒適,因為方法簽名非常模棱兩可:任何狀態在轉移對像下都是表示的。
如(即計算失敗):代碼
要么允許您表示兩個明確的計算結果。左被用來表示阻塞/安全轉移,直接表示未阻止的轉移。
這僅允許以隱式方式表示兩個值:團隊共識指示這些含義的左右。
另外,看到兩個T相同的Either<T,T>是一條曲。這可能是由於隱式機器隱含(從公共類繼承) + the引起的。
如thunks(即延遲計算):代碼
thunk已作為參數傳遞並在必要時執行。該系統不允許容易持久/存儲,因為函數無法序列化/估算化。
作為工作流程(即,一組預定義的步驟):[代碼] [https://github.com/alvarogarcia7/bank-kata-kotlin/tree/tree/variant/variant/control-control-safe-safe-transfers-transfers-astfers-workflow]
該工作流程具有一組步驟(可以驗證或未驗證),最後有一組動作。
根據已實施的方式(僅傳遞數據,但行為不傳遞),這可以在靜止狀態下序列化 /暴露。
f log --format="%s;%ct"|grep CLOCK|cut -d";" -f1給出消息f log --format="%s;%ct"|grep CLOCK|cut -d";" -f2在毫裡
然後將其複製到電子表格併計算差異時計算