Sandro MancusoのBank Kataを練習しました
TDDの外部 +クラシストミックスのミックスを練習する私の目標(マヌエルリベロのアイデア)
Git Commitsを使用して時間を追跡します。
安全な転送の機能を実装しました。アカウントは、コード(OTPなど)を要求するように構成することができます。
最終的に一貫したシステムを選択するのではなく、酸性特性を節約する方法を調査しました。
アカウントクラスのパラメーターとして:コード
これは最も単純なアプローチです。クラスの動作を決定するパラメーターのタイプに依存します。
状態マシンとして:コード
転送クラスの内部/外部部分として状態と遷移を構成するため、より一般的で将来のプルーフ(Yagni?)になります。
これは、一般的なクラス(この場合、転送)からの継承を使用して、またはラッパー(状態<>)を使用して現在の状態を示すことができます。前者には、生産コードがあります。後者の場合、State Machine Libraryを実装するサイドエトゥード(車 +その工場をドメインとして使用)
実装では、メソッドシグネチャは非常にあいまいであるため、タイプセーフが少なく、この実装で作業するのが快適ではありません。どの状態も転送オブジェクトの下で表現できます。
どちらか(つまり、計算に失敗した):コード
どちらも、2つの明示的な計算結果を表すことができます。左は、ブロック/安全な転送を意味し、ロックされていない転送を意味するために左に使用されています。
これは、暗黙の方法で2つの値を表すことができます。チームのコンセンサスは、これらの意味について左右を示します。
また、両方のTが同じであるEither<T,T>を見るのはstreageです。これは、状態マシンを暗黙的に(共通のクラスから継承する) +どちらかを持つことによって引き起こされる可能性があります。
サンクとして(つまり、計算の遅延):コード
サンクはパラメーターとして渡され、必要なときに実行されました。このシステムでは、機能をシリアル化/脱必要にすることはできないため、簡単な持続性/ストレージを許可しません。
ワークフローとして(つまり、事前定義されたステップのセット):[code] [https://github.com/alvarogarcia7/bank-kata-kotlin/tree/variant/control-safe-transfers-as-workflow]
このワークフローには一連の手順があり(検証できます)、最後に一連のアクションがあります。
実装された方法に基づいて(データのみが渡されますが、動作ではありません)、これは休憩上でシリアル化 /露出する可能性があります。
f log --format="%s;%ct"|grep CLOCK|cut -d";" -f1メッセージf log --format="%s;%ct"|grep CLOCK|cut -d";" -f2ミリで時間を与えます
次に、スプレッドシートにコピーして、停止したときに違いを計算します