廃止されたリソース管理システム (Mac および Windows では QuickTime Resource Manager) を置き換えるプロジェクトに取り組んでおり、文字列キーを使用してリソース ファイルからデータを取得する Qt が使用する現在のモデルを使用しています。
たとえば、リソース ファイルに "HungryBear.png" という画像が保存されているとします。Qt と私が提案したシステムは、擬似コードで表される方法でそれを取得します。
image = GetImageResource("BearPlugin/Images/HungryBear.png");
その時点で、その画像が何であり、どこにあるのかは明らかです。
現在のシステムでは、数字を使用しています。数値に関する問題は、リソース ファイル (多くの場合があります) を探し出して、それがどのイメージ (またはリソース) であるかを調べる必要があることです。
この例:
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);
最初の方法は、リソース ファイル データにアクセスする現在のシステムで見たものです。C# と Java がそれを使用していると言われましたが、文字列のキーと値のペアなどに対して使用していることを知っています。
しかし、私の同僚は、私が提案している文字列 ID にこれらの数値 ID を使用する現在のシステムを変更することに懸念を表明しています。多くの利点があるようで、現在のシステムで発生した問題の多くが修正されます。提案されたシステムがより優れており、望ましいものであるという裏付けとなる文書が欲しいので、私の質問は次のとおりです。
コードで文字列識別子 (階層型) を使用する方が、任意の数値を使用するよりも優れていることを示す研究や議論を知っていますか?
ノート
- データ ファイルを格納するために、zip ファイル (圧縮されていない可能性があります) を使用する予定です。
- アプリケーションプラグイン環境があります。アプリケーションと各プラグインは、独自のリソース ファイルを持つことができます。プラグインは、アプリケーションのリソース ファイル内のリソース データにアクセスできる場合があります。
検討されたいくつかの要件は次のとおりです。
- ソフトウェア開発者は、リソースを一意に識別できる必要があります。
- ソフトウェア開発者は、リソースに意味のある名前を付けることができるものとします。
- リソースは、それらを必要とするアプリケーションの部分に関連付けられます。
- ローカライザーは、変更されたリソース ファイルを簡単に識別できる必要があります。
- ローカライザーは、独自のツールを使用してリソース ファイルを変更できる必要があります。
- 使用している機能が非推奨の呼び出しに依存している場合、顧客は警告を受けるものとします。