Vaya con el segundo enfoque, simplemente debido al hecho de que puede introducir nuevos tipos de recursos o elementos en cualquier momento sin tener que reescribir o actualizar el código ( desarrollo basado en datos ).
Editar:
Para elaborar un poco más sobre por qué esto es una buena práctica en general, incluso si está 100% seguro de que algún valor nunca cambiará.
Tomemos el ejemplo del juego de consola mencionado en los comentarios, porque proporciona una muy buena razón por la que no debe codificar nada, a menos que realmente tenga (o quiera), por ejemplo, claves de cifrado, su propio nombre, etc.
Cuando se lanza un juego en consolas, estos generalmente tienen que pasar por un proceso de revisión, donde el control de calidad del fabricante de la consola probará el juego, lo jugará, buscará problemas, etc. Esto es obligatorio y cuesta dinero, mucho dinero. Creo que una vez leí que un lanzamiento podría costar entre 30,000 y 50,000 dólares solo por la certificación.
Ahora imagine que está presionando su juego para su lanzamiento, pagando los $ 30,000 y espere. Y de repente te das cuenta de que algunos de los valores de tu juego están literalmente rotos. Digamos que puedes comprar barras de hierro por 50 de oro y venderlas por 55 de oro.
¿Qué haces? Si ha codificado esas cosas, tendrá que crear una nueva versión de actualización / lanzamiento, que tendrá que pasar por una revisión una vez más, ¡así que el peor de los casos pagará una vez más por la nueva certificación! Apuesto a que a Ubisoft no le importará, pero para tu propio bolsillo de desarrollador de juegos independientes ... ¡ay!
Pero imagine que el juego solo verificaría ocasionalmente las definiciones actualizadas del juego (por ejemplo, en forma de un archivo JSON). Tu juego podría descargar y usar la última versión en cualquier momento sin requerir una nueva actualización. Puede corregir ese desequilibrio / explotación / error en cualquier momento sin requerir una nueva certificación o cualquier otro dinero pagado. Solo una pequeña decisión de diseño, no creías que valiera la pena, ¡solo te ahorró una suma de dinero de 5 dígitos! ¿No es asombroso? :)
Solo no me malinterpretes. Esto también se aplica a otros tipos de software y plataformas. La descarga de archivos de datos actualizados es en general mucho más fácil y factible para el usuario estándar, sin importar si es un juego o algún tipo de aplicación / herramienta. Imagine un juego instalado bajo Archivos de programa en Windows. Su actualizador necesita derechos de administrador para modificar cualquier cosa y no puede modificar los programas en ejecución. Con DDD, su programa simplemente descarga los datos y los usa. Es posible que el jugador ni siquiera note que ha habido una actualización.