- 306 名前:デフォルトの名無しさん mailto:sage [2016/11/04(金) 23:44:11.39 ID:TD4/YqE6.net]
- あぁINIってヒント出てたのかw うん。だからおかしいと言ったのよ。
よっぽど簡単なのは除くけど設定ファイルはクラスにするべきだよ。 クラスにすると言っても、config.get('クラス/セクション/キー') みたいなことはしないようにw INIのクラスやセクションごとに別々のクラスにするかどうかは場合次第だけど 使い方としてはconfig.key1 とか config.key2 とか。これは基本で、例えばINIに [section] name1=value1 name2=value2 name3=value3 みたいなのがあればconfig.section.getNames() で配列を返したり。 [log] enable=1 filename="/var/log/hoge.log" みたいなのがあれば、config.log.getEnable()はあえて作らずconfig.log.getFilename() で取得する値が enable=1のときはfilenameの値、enable=0の時はnullになるとか。 何が言いたいかというと if config.log.getEnable() == true && config.log.getFilename() != null then みたいな アホらしいコードをアプリ側で書く必要は無くなるよ if config.log.getFilename() != null then だけでよくなるよってこと 最大値とかもさ、configクラスが読み取ったときに超えていればエラーにすることだってできるし、 初期値なんかもconfig.getSomeValue()メソッドを用意してキーがなければこの値って書いておけば、アプリ側からは普通に値を参照するだけでいい もしかしてアプリ側 に some_value = (config[SOME_VALUE_KEY] == null) ? DEFAULT_SOME_VALUE : config[SOME_VALUE_KEY] とか いうのが大量に溢れていたりしない?w あー、あと型の変換もconfigクラスでやるべきだね。 ようするにconfigクラスっていうのは単にキーと値を定義してマッピングするだけの機能にしてはだめってこと。 バリデーションや初期値や複数のキーの組み合わせをまとめたりアプリ側からより使いやすくする。 こうやっておくとINI形式からXML形式やJSON形式に変えたとしても、configクラスが変わらなければ 参照側に影響はないし、バージョンアップ等で互換性を保ったままセクション名やキー名を変えることだってできる。
|

|