マジックナンバーとは
プログラム中に「分かりにくい」即値をそのまま書くことです。
定数として定義すればいいものではない
例えばこれ。
単に定数として定義しても意味がありません。 せめてE5001_RESOURCE_NOT_FOUNDならいいんですが。
/** e.sl.fw.5001=Resource not found. */
public static final String E_SL_FW_5001 = "e.sl.fw.5001";
「分かりにくい」かどうか
勘違いしてはいけないのは、「即値=マジックナンバー」ではありません。 理由は、関連記事に書いている通りです。
自分の場合は以下を基準にしています。
- 複数回出てくるところ
- 前後のコードやドキュメントを呼んでも定数の意味が分からないところ
- 変更される可能性があるところ
ただし、YAGNIの原則を守ってください。
定数を定義する場所
たぶんValue Objectがいいのかなぁと思います。