私は上記のデータフローを表す適切な方法を見つけようとしましたが(これはほんの小さなケースです)、それを行うための良い方法を見つけたかどうかはわかりません。現在の実装では、(if user.isMarried && user.age > 23 & ....)
のように以前のすべてのデータを評価するだけなので、維持するのが非常に困難です。
基本的に、必要なのは、現在の入力と以前の条件に基づいて次のステップを計算する方法です。私は有限状態機械について考えてきましたが、私の主な問題は、それが入力に依存するだけでなく、以前のデータがすでに回答されていることです。
また、意思決定ツリーのようなものを使用することも思いつきましたが、適切に表すことができません。主題にどんな光でも本当にいただければ幸いです。
注:空の質問が入力に依存せず、以前の回答(既婚かどうか)に依存していることを確認してください。
1つの解決策はステートマシンです。ステートマシンでは、一度に1つのエントリを処理しても、前の一連のアクションに基づいて異なる状態にあるからです。これは、サイクルがある場合にも特に役立ちます。実際には、フローチャート図ISステートマシンです。ペンに従ってください。現在表示されているボックスは、以前に起こったことに基づいています。取得しようとしているボックスは、入力し、どこから来たのか(つまり、以前に何が起こったか)を入力します。
問題は、状態とその遷移を管理することです。これは、命令型言語では困難です。
プロローグはコメントで提案されていますが、複雑なルールを処理するために少なくとも部分的に設計されているため、あなたの場合に非常に役立ちます。この種のタスクに効率的であり、多くのルールを非常に高速に評価でき、ルールを再利用できるため、これは素晴らしいことです。欠点は、少なくとも私の経験から、あなたがパラダイムに慣れていない場合、それを学ぶにはかなり多くの脳の再配線が必要だったということです。