2012-02-05 12 views
2

RubyでNFLチームをデータ構造に編成しようとしています。私の目標は、ボルチモアレイヴンズがAFC(カンファレンス)とAFCノース(ディビジョン)であることを簡単に照会することです。NFLを整理するためのベストなRubyデータ構造

また、どのチームがAFC(16チーム)で、どのチームがAFC北(4チーム)にいるのかを簡単に確認したいと思います。

今は配列で配列を使用していますが、これを行うにはより良い方法があると確信しています。

私のデータが今のところ構造化されているので、nfl [0] [0] [0]はボルチモアレイヴンズを印刷しなければなりません(最初の0はAFC/NFC、2番目は0です。 )。これはあまりにも複雑すぎるようです。

何か助けや洞察力は素晴らしいでしょう!

答えて

5

、おそらく大丈夫ですではなく、活用しようとしていますネイティブルビデータ構造。たとえクラスがDOをしていなくても、あなたはレール関係の中から自然なサウンドのコードをたくさん取得します。あなたがつかむしたいとき

team = Team.find_by_city("Baltimore") # also gets you the ravens 

をして:あなたはまた、ほぼ無料で、潜在的に他の有用な呼び出しを取得

team = Team.find_by_name("Ravens") 

team = nfl[0][0][0] 

より:

私はむしろ言うだろう部門のすべてのチーム:

私はAFCのために週4ゲームのすべてを見つけること、または勝敗によってチームの分裂を注文するように、他の有用なセマンティクスのすべての種類を想像することができますはるかに読みやすい

all_nfc_teams = nfl[0][1] 

より

all_nfc_teams = Division.find_by_name("NFC").teams 

。チームには、非常に明確なセマンティクスを持つチームのコレクションを取得できるスコープを定義できます。

all_nfc_teams = Team.nfc 
1

「ベスト」は主観的です。また、組織の性質にも依存します。

部門や会議は、チームを保持する以外の何かをしますか?もしそうなら、それらはクラスでなければなりません。

それ以外の場合はハッシュが、私は、便利なクラスでそれらをカプセル化するかもしれないハッシュ構造を非表示にする、という名前のチームへのアクセスを提供し、などが、彼らが関係を持つクラスでなければなりません

+0

NFLは会議、会議は分裂を保持を保持し、各部門がチームを保持し、チームは質問がより多くのようなものだった@ZackShapiro自身 –

+0

に関する統計情報を保持する「彼らはオブジェクトを保持以外* *他の何をしますか?」ハッシュはオブジェクトを保持し、よく理解されたセマンティクスを持つことができます。コンテナがドメイン固有のことを知っている/行う必要がない場合は、スタイル、利便性、および好みの問題です。個人的には、わかりやすく、そして将来の拡張のために、クラスを作っています。 –