実行時のエラーを出してみる
前にテストコードで書いたこれがちょっとイマイチ・・・って気もしてて
return when (nextNodes.size) {
0 -> throw ToNextStatusException("zero match")
1 -> checkNode(data , nextNodes.first().toNode)
else -> throw ToNextStatusException("many match")
}0とelseの時にExceptionを出しますなんだけど、意図としてはここに来たら設定的なエラーだよ!なんだよなぁ〜
ドキュメント見てたらこんな風にかける事に気がついたので
val nextNodes = nexts.values.filter { it.check(data) }
return when (nextNodes.size) {
0 -> error("zero match")
1 -> checkNode(data , nextNodes.first().toNode)
else -> error("many match")
}エラーだ!って判りやすくて良い気がする
あとこのコードもイマイチ不本意
val currentNode = flow.nodes.get(current) ?: throw ToNextStatusException("status name not found")なんでnullならExceptionって書いてんだと。
val currentNode = requireNotNull(flow.nodes.get(current) , {"status name not found"})NotNullでなければいけませんって宣言の方が良いよね!
あと、文字列を渡すんじゃなくてLambdaを渡すのが良い感じ
TODOもだけど、この辺も意外と標準で揃ってて良かった。