2012-02-05 3 views
2

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

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

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

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

Любая помощь или понимание были бы замечательными!

ответ

5

Они должны быть классы с отношениями, а не пытаться использовать самые нативные структуры данных 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

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

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

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

+0

НФЛ проводит конференции, конференции трюмов, подразделения держать команды, команды проводить статистические данные о себе –

+0

@ZackShapiro Вопрос был больше похож «ли они сделать что-нибудь * другой * чем держать объекты?» Хеши могут хранить объекты и хорошо понимать семантику. Если контейнерам не нужно знать/делать что-то конкретное для домена, то это вопрос стиля, удобства и предпочтения. Лично я делал занятия для ясности и будущего расширения. –

Смежные вопросы