定数の管理設計方針

設計やプログラミングにおいて、「定数」というモノはよく登場する。そしてそれらの定義の仕方も様々である。

古のアプリだと「定数クラス」と「プロパティファイル」の組み合わせが多く、ビジネスロジックが絡むモノは「DB マスタテーブル」が使用されることが多かった。

今日では Docker や Kubernetes などコンテナ化の仕組みに沿って、「プロパティファイル」の利用が減り、「OS の環境変数として注入する」方式が増えてきたと感じる。

では、全ての定数を「OS の環境変数から注入する」方式で定義するべきなのか。全て「定数クラス」として定義するのはどうなのだろうか。


結論から言えば、これら定数の管理方式は、その定数の使われ方、影響の与え方によって変えるべきである。一つの方法に集約するのがベストではない。

ビジネスロジックの変更時にどのくらい定数値に変更が入りやすいかといえば、「定数クラス」が一番可能性が高く、次いで「DB マスタテーブル」、そしてそのビジネスロジック自体を切り替えるような外部注入を「OS 環境変数」(ないしは「プロパティファイル」) が担う、という考え方だと筋が通るだろう。