Estoy trabajando en un proyecto para reemplazar un sistema de administración de recursos (QuickTime Resource Manager en Mac y Windows) que ha quedado obsoleto y he estado usando el modelo actual que Qt usa para recuperar datos del archivo de recursos usando una clave de cadena .¿Por qué se usan identificadores de cadena para acceder a los datos de recursos?
Por ejemplo, puedo tener una imagen en mi archivo de recursos, "HungryBear.png" almacenada en mi archivo de recursos. Qt, y mi sistema propuesto, se obtienen de una manera representado por la psuedocode:
image = GetImageResource("BearPlugin/Images/HungryBear.png");
Está claro en ese punto lo que la imagen es, y donde se pueden encontrar.
En nuestro sistema actual, usamos números. El problema con los números es que uno tiene que buscar el archivo de recursos (puede haber muchos) para descubrir qué imagen (o recurso) es.
Un ejemplo de esto:
oldActiveResourceFile = GetActiveResourceFile(); // think of a stack of resource files
SetActiveResourceFile("BearPlugin");
image = GetImageResource(1);
// Perhaps other resources are retrieved and other functions called
// Possibly introduce problems by calling functions that change "Active Resource File"
SetActiveResourceFile(oldActiveResourceFile);
El primer método es lo que he visto en los sistemas actuales que tienen acceso a los datos del archivo de recursos. Me han dicho que C# y Java lo usan, sé que lo hacen para pares clave-valor de cadena, etc.
Sin embargo, un colega mío ha expresado su preocupación sobre cambiar el sistema actual de uso de estos números ID para los identificadores de cadena que estoy proponiendo. Parece que hay muchos beneficios y solucionan muchos de los problemas que hemos tenido con el sistema actual. Quiero tener documentación de respaldo de que el sistema propuesto es mejor y deseable, así que mi pregunta es la siguiente:
¿Conoce alguna investigación o discusión que demuestre que usar un identificador de cadena (jerárquico) en el código es mejor que usar un número arbitrario?
NOTAS
- Pienso en el uso de un archivo zip (posiblemente sin comprimir) para contener los archivos de datos.
- Tenemos un entorno de plugin de aplicaciones. La aplicación y cada complemento pueden tener sus propios archivos de recursos. Los complementos pueden acceder a los datos de recursos en el archivo de recursos de la aplicación.
Éstos son algunos de los requisitos que se han considerado y creo que cumplen:
- desarrolladores de software será capaz de identificar de forma única los recursos.
- Los desarrolladores de software podrán nombrar recursos con nombres significativos.
- Los recursos deben estar asociados con las partes de la aplicación que los necesitan.
- Los localizadores deben ser capaces de identificar fácilmente los archivos de recursos que han cambiado.
- Los localizadores deben poder usar sus propias herramientas para modificar los archivos de recursos.
- Se alertará a los clientes en caso de que la funcionalidad que están utilizando dependa de llamadas obsoletas.
Qué idioma es el código? – Powerlord
El código se escribirá en C++ para Mac OS X y Windows XP/Vista/7. Estaba planeando convertir los archivos de recursos en un archivo comprimido que contiene los datos que pueden ser: 1) archivos de imagen, 2) archivos de cadenas localizables, 3) archivos de texto de definición de diálogos, 4) archivos de sonido, 5) otros archivos de recursos . –