- PR -

アプリケーションを作る上で定数の配置場所の判断基準。DB?ファイル?

投稿者投稿内容
jama
常連さん
会議室デビュー日: 2006/09/12
投稿数: 45
投稿日時: 2008-04-22 22:13
B定数用のクラスとアクセッサを用意してそこに書く
私は、列挙型(enum)か定数クラスを使用します。
kiyokura
ベテラン
会議室デビュー日: 2007/08/08
投稿数: 69
お住まい・勤務地: 岡山
投稿日時: 2008-04-23 01:37
※環境依存の丸文字を()でくくった数字に変更してあります。

私の考えも、みなさんに近いです。


まずは、スコープというのとはちょっと異なるベクトルで、

[1]変更したらコンパイルして再配布しても問題ない
 (≒基本的にリリース後にはよほどの事がないと変更されない想定等)
 ...... (1)〜(3)

[2]変更の度にコンパイル、再配布が発生するべきでない
  もしくはコンパイル時には決まらないもの
 (≒リリース後の値の変更が容易に想像できる、もしくは実行環境のみに依存等)
 ...... (4)〜(6)

にざっくり別れると思います。



そして、[1]のケースについては、やはり必要なスコープの範囲で絞って、適宜(1)〜(3)に振り分けます。

スコープ的に(1)のケースでも(2)にすることもあります(私の場合、主にCを使っていた時に先頭にマクロでまとめて定義していた時の名残という面が強いのだと思います)。
が、MVCで言うVに近いところだと、(1)にすることが多いです(どのみち周りがリテラルだらけだったりする事が多いので)。
またメソッド内等の最小のスコープの場合でも、『一回のみの現れる』なのか『複数回現れる』のか等の要因から、
1-1) ステートメント中に完全にベタ書き
1-2) ブロックの先頭等で定数宣言
と使い分けていることもあります。…が、あまり意識してやっていないので、その時の流れで変わっていることも多いような。

このあたりはその時使っているIDEや言語仕様にもよる気がします。
また最近はIDEも賢くなってきてリファクタリングも遣りやすくなったので、思うままに書いて、あとから他と合わせる、とかも増えてきました。(良し悪しは別にして)



[2]のケースについては、本当にケースバイケースというか、処々の要件でしか決めれない、と思っています。
例えば、実行環境や依存させる場所、運用時に変更を行うオペレーターの方の物理的及び政治的なアクセスのし易すさ等など。後は…パフォーマンスも重要ですね。
("政治的"というのが存外にに重要だったりして困ることがあります。ファイル変更はいいけど、DB書き換えるときは専門の担当者に紙ベースで依頼しないといけない、とか:P)

ということで、先の[1]とは違う次元で考えるべきになると思います。

ただ、これらの値にプログラム中からどのようにアクセスするかについては、(3)のような感じでクラスとアクセッサと用意するという設計にする事が多いです。

スキルアップ/キャリアアップ(JOB@IT)