開発効率をあげるサンプルに
「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をお勧めする。
鈴木氏に感謝
コメント