Переходите ко второму подходу, просто потому, что вы можете в любое время вводить новые типы ресурсов или элементы без необходимости переписывать или обновлять код ( разработка на основе данных ).
Редактировать:
Чтобы более подробно рассказать о том, почему это в целом хорошая практика, даже если вы на 100% уверены, что какое-то значение никогда не изменится.
Давайте возьмем пример консольной игры, упомянутый в комментариях, потому что это дает очень вескую причину того, почему вы не должны жестко кодировать что-либо, если вы действительно не имеете (или не хотите), например, ключи шифрования, ваше собственное имя и т.д.
При выпуске игры на консолях, они обычно должны проходить процесс обзора, при котором собственный QA производителя консоли будет тестировать игру, играть в нее, искать проблемы и т. Д. Это обязательно и стоит денег, больших денег. Я думаю, что однажды прочитал, что выпуск может стоить 30 000-50 000 долларов только за сертификацию.
Теперь представьте, что вы запускаете игру, платите 30 000 долларов и ждете. И вдруг вы замечаете, что некоторые из ваших игровых ценностей буквально нарушены. Допустим, вы можете купить железные слитки за 50 золотых и продать их за 55 золотых.
Чем ты занимаешься? Если вы жестко запрограммировали этот материал, вам придется создать новую версию обновления / выпуска, которая должна будет еще раз пройти проверку, так что в худшем случае вы снова заплатите за повторную сертификацию! Бьюсь об заклад, Ubisoft не будет возражать, но для вашего собственного маленького кармана разработчиков инди-игр ... ой!
Но представьте себе, что игра просто время от времени проверяет наличие обновленных определений игры (например, в форме файла JSON). Ваша игра может загружать и использовать последнюю версию в любое время, не требуя обновления. Вы можете исправить этот дисбаланс / эксплойт / ошибку в любое время, не требуя повторной сертификации или других уплаченных денег. Просто какое-то незначительное дизайнерское решение, вы не думали, что оно того стоило, просто сэкономили вам 5-значную сумму денег! Разве это не круто? :)
Только не пойми меня неправильно. Это также относится к другим типам программного обеспечения и платформ. Загрузка обновленных файлов данных в целом намного проще и выполнима для обычного пользователя, независимо от того, игра это или какое-то приложение / инструмент. Представьте себе игру, установленную в Program Files в Windows. Для обновления вам нужны права администратора, и вы не можете изменять запущенные программы. С DDD ваша программа просто загружает данные и использует их. Плеер может даже не заметить, что произошло обновление.