Ich habe die Bank Kata von Sandro Mancuso geübt
Meine Ziele, bei denen man eine Mischung aus externen + klassischen Mix aus TDD üben kann (eine Idee von Manuel Rivero)
Verfolgen Sie die Zeit mit Git -Commits.
Ich habe die Funktion sicherer Überweisungen implementiert: Das Konto kann so konfiguriert werden, dass ein Code (z. B. OTP) anfordert, um die ausgehende Kabelübertragung (z. B. die meisten Banken) als eingehende Übertragung zu überprüfen.
Ich habe Wege untersucht, um die Säureeigenschaften zu sparen, anstatt ein schließlich konsistentes System zu wählen.
Als Parameter der Kontoklasse: Code
Dies ist der einfachste Ansatz: Hängen Sie vom Typ des Parameters ab, um das Verhalten der Klasse zu bestimmen.
Als Zustandsmaschine: Code
Konfigurieren Sie die Zustände und Übergänge als interner/externer Teil der Übertragungsklasse, wodurch es generischer und zukunftssicherer (Yagni?)
Dies kann unter Verwendung der Vererbung aus einer gemeinsamen Klasse (in diesem Fall, Übertragung) oder einer Wrapper (Status <>) dargestellt werden, um den aktuellen Zustand zu bezeichnen. Für den ersteren gibt es den Produktionscode. Für letztere implementieren eine Seite Étude, die eine staatliche Maschinenbibliothek implementiert (unter Verwendung eines CAR + seine Fabrik als Domain).
In der Implementierung ist es weniger Typen sicher, weniger bequem mit dieser Implementierung, da die Methodensignaturen ziemlich mehrdeutig sind: Jeder Staat ist unter dem Übertragungsobjekt dargestellt.
Als beide (dh fehlgeschlagene Berechnung): Code
Mit entweder können Sie zwei explizite Berechnungsergebnisse darstellen. Links wurde verwendet, um eine blockierte/sichere Übertragung und rechts zu bedeuten, um eine nicht blockierte Übertragung zu bedeuten.
Dies ermöglicht nur implizit zwei Werte: Der Teamkonsens zeigt für diese Bedeutungen links und rechts an.
Außerdem ist es eine Straße, eine Either<T,T> zu sehen, wobei beide T gleich sind. Es ist möglich, dass dies dadurch verursacht wird, dass die Zustandsmaschine implizit (Erben einer gemeinsamen Klasse) + die entweder.
Als Thunks (dh verzögerte Berechnungen): Code
Ein Thunk wurde als Parameter übergeben und ausgeführt, wenn er notwendig ist. Dieses System ermöglicht keine einfache Beharrlichkeit/Speicherung, da Funktionen nicht serialisiert/deserialisiert werden können.
Als Workflow (dh eine Reihe vordefinierter Schritte): [Code] [https://github.com/alvarogarcia7/bank-kata-kotlin/tree/variant/control-safe-transfers-as-workflow]
Dieser Workflow hat eine Reihe von Schritten (die validiert werden können oder nicht), und am Ende gibt es eine Reihe von Aktionen.
Basierend auf der Art und Weise, wie es implementiert wurde (nur Daten werden weitergegeben, aber nicht das Verhalten), könnte dies über Ruhe serialisiert / freigelegt werden.
f log --format="%s;%ct"|grep CLOCK|cut -d";" -f1 gibt die Nachrichten f log --format="%s;%ct"|grep CLOCK|cut -d";" -f2 gibt den Zeiten in Millis
Kopieren Sie dann in eine Tabelle und berechnen Sie den Unterschied, wenn es gestoppt ist