開発効率をあげるサンプルに
「1. テキストファイルベースでの実行中の変数編集」というものがある
Siv3D | 開発効率を上げるサンプル集
これについて自作クラスを扱う方法を伺ったところ、
二つのやり方を教わったので紹介し、比較する
1.難しい方法
QC.cpp · GitHub
2.簡単な方法
QC2.cpp · GitHub
それぞれのメリット・デメリットを以下にまとめる
| 項目 | 方法1 | 方法2 |
| 概要 | Parse関数とfmt::formatterを定義して扱う方法 | MyClassのメンバー変数(今回はnameとid)を個別にQuickConfigで管理する方法 |
| 設定の簡潔さ | MyClass全体を1回のQC呼び出しで登録可能 | 各メンバー変数を個別に登録する必要があり手間が増える |
| 柔軟性 | メンバーごとの独立した管理が面倒 | メンバー変数ごとに簡単に独立して管理可能 |
| 明確性 | コードが短く、QC(myClass)でクラス全体を扱えることが明確 | 各メンバーの登録が必要なため冗長になる |
| 拡張性 | 新しい型の追加時にParse関数とfmt::formatterを再定義する必要がある | 標準的な型であれば、QuickConfigがそのまま利用可能 |
| エラー管理 | パースエラー時にParse関数で一括してエラーハンドリング可能 | 各メンバー変数ごとにエラー処理を行う必要がある(QuickConfig::capture参照 |
| 設定ファイルの見やすさ | 設定ファイルにクラス全体が1行で保存され、視認性が低い可能性がある | 各メンバー変数が独立した項目(1行1メンバ)として設定ファイルに出力され、視認性が高い |
| 依存性 | パースロジックをカスタマイズして独自フォーマットが可能 | 独自フォーマットは難しい(一貫性があるとも言える |
| 実装の複雑さ | Parse関数やfmt::formatterを実装する必要があり、初期設定が煩雑 | クラス全体のパースロジックを作らなくても動作する |
どちらの方法を選択するかについては、アプリケーションの規模感で決めると良いだろう。大きくないものであれば、簡単な方法2をお勧めする。
鈴木氏に感謝

コメント