gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

configの話

で、ついでにconfig関連のおいちゃん的見解。
端的には「いいじゃん一カ所にまとめなくても」。


んと…分解して。
DRYはとても大事だと思うです。ここに異論はなし。
ただ、現実問題として「ン千行とかのconfigファイル」を見るにつけ、なんていうか「倦んずあり」なんですわ、正直。
過去にみたconfig、いくつかの設定が「2度も3度も書かれていたり」して、明らかに「管理できてない」感じだったし。


で。
そんなこんなを経て、「これくらいがちょうどよくね?」的な落としどころを考えてみました。
っつかおいちゃん自身は大分前からこのパターンなので、一度書いておこうかなぁと思ってね。
今、絶賛「暗黙知形式知に変換すること推奨期間」なのでw


・「運用さん」とか、プログラマ以外が変更する可能性のある設定
問答無用でconfigに。できれば、形式も「name=value」のような、わかりやすいものにしましょう。
よくあるあたりで例えば「mailを送るときのmail_fromのメアド」とか。
コメントが書けるようにすることも重要。


・「プログラマしか変更しない」けど、環境によって値が異なる設定
これもconfig。ただ、上述とは「別の」ファイルがいいと思うなぁ。で、シンボリックリンクでスイッチングする、っと。
DBのアカウント情報とかがこの辺。ドメイン情報系(自分のドメインとかmxドメインとか)もここだねぇ。


・1クラスでしか扱わない設定
これはconfigに「切り出さない」で、クラス内で持っちゃう。クラス定数にするのかメソッドにするのかプロパティでfinalにしとくのか、とかはまぁ色々好みもあるだろうけどさ。
どうせ「そのクラスが知ってればいい」んだから、下手に「共通config」なんていう「なんでもぶち込めるところ」に入れないで、可能な限り、ギリギリまで「クラスの中で」持っておく。
どうしても「いかんともしがたくなって」から、外に切り出したって遅くはないんだし。


・「プログラマしか変更しない」けど、複数箇所で扱う可能性の高い設定
いわゆる一般的に、定数とかconfigファイルで持ち回るのが、ここ。
ただここはよっぽど気をつけないとあっというまに「膨らむ」ので、できるだけ「クラスの中に閉じ込められないか」を検討したほうがいいと思う。


こんな感じかなぁ。
みなさんは、どんな風にconfigを持って、整理しているのかしらん?