Лучшая структура данных Ruby для организации НФЛ - PullRequest
2 голосов
/ 06 февраля 2012

Я пытаюсь организовать команды НФЛ в структуры данных в Ruby.Моя цель - легко узнать, что Балтиморские Вороны - это АФК (конференция) и АФК Север (дивизия).

Я также хотел бы легко увидеть, какие команды входят в АФК (16 из них)и какие команды находятся на севере АФК (4 из них).

Сейчас я использую массивы в массивах, но я уверен, что есть лучший способ сделать это.

СПоскольку мои данные структурированы прямо сейчас, я должен положить nfl [0] [0] [0], чтобы распечатать Baltimore Ravens (первый 0 - AFC / NFC, второй 0 - конференция, а третий 0 - деление).Это кажется слишком сложным.

Любая помощь или понимание было бы удивительно!

Ответы [ 2 ]

5 голосов
/ 06 февраля 2012

Они должны быть классами со связями, а не пытаться использовать собственные структуры данных ruby.Даже если классы ничего не делают, вы получаете много естественного звучания из рельсовых отношений.

Я бы скорее сказал:

team = Team.find_by_name("Ravens")

, чем

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

Вы также можете получить потенциально другие полезные звонки почти бесплатно:

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

и когда вы хотите собрать все команды для разделения:

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

, что далекоболее читабельный, чем

all_nfc_teams = nfl[0][1]

Я могу представить себе всевозможную другую полезную семантику, например, поиск всех игр АФК на 4-й неделе или распределение команд по победам и поражениям.Вы можете определить области действия в командах, которые позволят вам получать коллекции команд с очень четкой семантикой.

all_nfc_teams = Team.nfc
1 голос
/ 06 февраля 2012

«Лучший» - субъективный.Это также зависит от характера организационных подразделений.

Делают ли подразделения и / или конференции что-либо кроме проведения команд?Если так, то они должны быть классами.

В противном случае хэши, вероятно, хороши, хотя я мог бы инкапсулировать их в удобном классе, чтобы скрыть структуры хешей, предоставить доступ именованной команде и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...