私はポーカーサイトからのハンド履歴ログを解析するためにRubyで小さなプログラムを書いています。ログは数行に分割され、次のようになります。
Table 123456 NL Hold'em $1/$2
5 Players
Seat 3 is the button
Seat 1: randomGuy112 $152.56
Seat 2: randomGirl99 $200
Seat 3: PokerPro $357.12
Seat 4: FishCake556 $57.19
Seat 6: MooMoo $188.98
Dealt to MooMoo [Ah, Ks]
randomGuy112 folds
randomGirl99 raises to $7
etc.. etc..
この情報をオブジェクトに要約したいのですが、たとえば、別の方法でレンダリングしたり、データベースに保存したりできます。私が最初にこの問題について考えたとき、私は、いくつかの正規表現といくつかのif/elseステートメントを備えた1つの本当に単純なクラスがあると思っていました。次に、これが非常に大きな方法になり、デバッグ/保守するのに悪夢になる可能性があることに気付きました。プレーヤーのアクションを収集するには、ゲームの各段階(プリフロップ、フロップなど)でループする必要があることに注意してください。
また、TDDアプローチでこれに取り組みたいのですが、「1つの長い方法」の方法は、後の入力をチェックするためのテストが、以前のテストに依存することを意味します。
私はRubyにまったく慣れておらず、「Rubyの方法」をクリックして物事を行うことはまだありません。私は別の言語でC#コードを書いていることに気づいています。
if / elseステートメントの大きな混乱ではなく、よりテストしやすいように、パーサーを設計する方法についていくつかの指針を教えてください。