我已经练习了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在毫里
然后将其复制到电子表格并计算差异时计算