1.定数によるマジックナンバーの置き換え

2020-11-24

こんにちは管理人(@vip___p)です。

今回はリファクタリング/マジックナンバーの置き換えについて触れていこうと思います。

リファクタリングについては下記の記事で
簡単にまとめているので是非参考にしてください。

下記のような方は是非参考にしてください。

  • Java初学者
  • リファクタリングについて興味がある方

マジックナンバーの置き換え

簡単

書籍:[Java言語で学ぶリファクタリング入門]
シンボリック定数によるマジックナンバーの置き換えについて触れていきます。

マジックナンバーの置き換えを行う理由

理由は下記のとおりです。

  1. 意味が分かりにくい
  2. 後々修正が面倒

など理由として挙げられます。

簡単に例を見てみましょう。

修正前
If (type == 1) {}
修正後
public static final int MAX_LENGTH = 100;

If (type == USER_SIT) {}

置き換えるメリット

メリットについて紹介します。

値が何を指しているかわかりやすい

修正前のコードを見てみるとまず
1という数字が何かわからないです。

1と言う数字が何かを追う処理が必要なるので面倒と思います。
シンボリック定数をすると100が何の数字か一目でわかるようになり可読性が上がります。

コメントが減る

修正後のコードを見ると値が何かわかるので
コメントを書く必要がなくなります。
その分ライン数も減り、コメントがなくなります。

定数を使い回せ修正が楽

1という数字を複数使用している場合
定数を宣言していると使いまわせる上
1という数字に変更があった場合
定数を使用していないと
何度も置き換える必要があります。

ですがシンボリック定数を使用していると定数の値を変更するだけで済みます。
なので値の修正がめちゃくちゃ楽になります。

eclipseの機能で検索して値を置き換え機能がありますが
同じ値で違い処理を担っている場合
その値まで置き換えてしまうので注意が必要です。

定数を置き換える注意点

定数を置き換える上で注意が必要です。
何でもかんでも置き換えるのは逆に可読性が下がる可能性があります。

置き換えは絶対ではありません。
見つけたら絶対に置き換える必要はありません

私は同じ値を何度も使用している場合などは良いですが
内容がある程度わかり、1度しか使用しない値が複数ある場合は
置き換える必要はないと思います。

まとめ

まとめ

今回のまとめです。

マジックナンバーを定数に置き換えるメリットは

可読性の高さや使い回せるなどがあります。

ですが絶対に置き換える必要があるわけではないので

状況によって使い分けましょう。

皆さんの参考になれば幸いです。