Я практиковал банк Ката от Сандро Манкусо
Мои цели, где практиковать смесь внешнего индикатора + классического сочетания TDD (идея Мануэля Риверо)
Отслеживание времени, используя GIT Commits.
Я внедрил функцию безопасных передач: учетная запись может быть настроена для запроса кода (например, OTP) для проверки банковского перевода, оба исходящих (например, большинство банков имеют это) в качестве входящего.
Я исследовал способы сохранения кислотных свойств, а не выбирать в конечном итоге согласованную систему.
Как параметры класса учетной записи: код
Это самый простой подход: зависит от типа параметра, чтобы решить поведение класса.
Как государственная машина: код
Настройте состояния и переходы как внутреннюю/внешнюю часть класса передачи, что делает его более общим и будущим (Yagni?)
Это может быть представлено с использованием наследования от общего класса (в данном случае, передачи) или с использованием обертки (состояние <>) для обозначения текущего состояния. Для первого есть производственный кодекс. Для последнего, сторона, внедряющая библиотеку штата (используя автомобиль + его завод в качестве домена)
В реализации он менее безопасен для типа, менее комфортно для работы с этой реализацией, так как подписи метода довольно неоднозначные: любое состояние представляется в соответствии с объектом Transfer.
Как (т.е. неудачные вычисления): код
Либо позволяет вам представлять два явных результата вычислений. Слева использовалась, чтобы означать заблокированную/безопасную передачу и право на ознаменование разблокированной передачи.
Это позволяет только представлять два значения неявным образом: консенсус команды указывает на левое и правое для этих значений.
Кроме того, это положительно, чтобы увидеть, как Either<T,T> где оба T одинаковы. Вполне возможно, что это вызвано тем, что государственная машина неявно (наследуя от общего класса) + любого.
Как Thunks (то есть, задерживаемые вычисления): код
Танк был принят в качестве параметра и выполнен, когда это необходимо. Эта система не допускает легкого упорства/хранения, поскольку функции не могут быть сериализованы/десериализованы.
В качестве рабочего процесса (т.е. набор предварительно определенных шагов): [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 дает время в миллисе
Затем скопируйте в электронную таблицу и рассчитайте разницу, когда она остановлена