【OpenSiv3D】ini監視の新しいアプローチ

開発効率をあげるサンプルに
「1. テキストファイルベースでの実行中の変数編集」というものがある
Siv3D | 開発効率を上げるサンプル集

これについて自作クラスを扱う方法を伺ったところ、
二つのやり方を教わったので紹介し、比較する

1.難しい方法
QC.cpp · GitHub
2.簡単な方法
QC2.cpp · GitHub

それぞれのメリット・デメリットを以下にまとめる


項目方法1方法2
概要Parse関数とfmt::formatterを定義して扱う方法MyClassのメンバー変数(今回はnameid)を個別にQuickConfigで管理する方法
設定の簡潔さMyClass全体を1回のQC呼び出しで登録可能各メンバー変数を個別に登録する必要があり手間が増える
柔軟性メンバーごとの独立した管理が面倒メンバー変数ごとに簡単に独立して管理可能
明確性コードが短く、QC(myClass)でクラス全体を扱えることが明確各メンバーの登録が必要なため冗長になる
拡張性新しい型の追加時にParse関数とfmt::formatterを再定義する必要がある標準的な型であれば、QuickConfigがそのまま利用可能
エラー管理パースエラー時にParse関数で一括してエラーハンドリング可能各メンバー変数ごとにエラー処理を行う必要がある(QuickConfig::capture参照
設定ファイルの見やすさ設定ファイルにクラス全体が1行で保存され、視認性が低い可能性がある各メンバー変数が独立した項目(1行1メンバ)として設定ファイルに出力され、視認性が高い
依存性パースロジックをカスタマイズして独自フォーマットが可能独自フォーマットは難しい(一貫性があるとも言える
実装の複雑さParse関数やfmt::formatterを実装する必要があり、初期設定が煩雑クラス全体のパースロジックを作らなくても動作する

どちらの方法を選択するかについては、アプリケーションの規模感で決めると良いだろう。大きくないものであれば、簡単な方法2をお勧めする。

鈴木氏に感謝

コメント