シンボリック定数によるマジックナンバーの置き換え
プログラムを開発する上で数値に意味を持たせる手法はよく使われますが、具体的な数値(マジックナンバー)をそのままソースコードに埋め込んではいけません。
たとえば、とある処理のステータスが「0:停止」、「1:実行中」の場合、
if (status == 0)
{
// 停止の場合の処理
}
else if (status == 1)
{
// 実行中の場合の処理
}
といったコードを書いてしまうと、「0」が何を意味するのか?「1」が何を意味するのかをコメントで補足しないと分からなくなります。
このような場合は「シンボリック定数によるマジックナンバーの置き換え」を実行しましょう。
フィールドにシンボリック定数を用意します。
// 停止
public const int STOP = 0;
// 実行中
public const int WHILE_RUNNING = 1;
先ほどのマジックナンバーをシンボリック定数で置き換えます。
if (status == STOP)
{
// 停止の場合の処理
}
else if (status == WHILE_RUNNING)
{
// 実行中の場合の処理
}
いかがでしょうか、if文が直観的になったと思いませんか?
さらに同じマジックナンバーを使うif文が点在している場合は、そのすべてをシンボリック定数で置き換えます。
こうしておけば仕様変更が入り「実行中は2になりました」といった場合でも、シンボリック定数の値を変更するだけで対応できます。
最後にシンボリック定数は「分かりやすい名前」を付けましょう。分かりにくい名前を付けるとかえって混乱します。
コメントはまだありません。