はじめに
アプリケーションにおいて定数を何処に定義するかについて以下に指針を記載する。
定数クラス
- プログラム内で使用する値
- 1度宣言したら以降変更が入らない値
例) プログラム中で使うコード値や固定文言
列挙型(enum) を使用できないか検討する
使用する際はスコープを意識して機能や役割ごとに定数クラスを作成すること。
{システム名}Constants.java とかは作らない。
インタフェースに定数を定義し使用することも本来のインタフェースの目的から離れてしまうので避けること。
プロパティファイル
- プログラム内で使用する値
- 環境毎に変更したい値
例) 接続情報(DB, 各サービス, ユーザID, パス)、ログ出力レベル、出力先(ログ, ファイル)
DB(コードテーブルetc)
- 頻繁に変更する可能性がある値
・・・とあったがバージョン管理出来ないし使いたくない。
アプリケーションの再リリースが不要というメリットが語られるが
そうせざるを得ないケースが発生するのはアプリケーションのつくりそのものがイケていないと思う。
環境変数
- マシン固有の値
例) VM起動時のパラメータ
参考リンク
定数ってどう管理するのが良いかね
定数の管理場所
アプリケーションを作る上で定数の配置場所の判断基準。DB?ファイル?
[Java]考えなしに肥大化する定数クラス
Properties file vs Constants class in Java