マジックナンバーとは、他のどこにも出現せず、ステートメントで直接使用される数字のことです。マジックナンバーは、例えば、 ループの反復回数、プロパティの値をテストする際などにしばしば使用されます。
コードを書くときには、マジックナンバーを使うのがわかりやすいかもしれませんが、デバッグ時にはそれがわかりにくくなります。
マジックナンバーは、明示的に名前を付けした定数に割り当て、読みやすくする必要があります。
-1、0、1はマジックナンバーではありません。
違反コード例
public static void doSomething() { for(int i = 0; i < 4; i++){ // Noncompliant, 4 is a magic number ... } }
準拠方法
public static final int NUMBER_OF_CYCLES = 4; public static void doSomething() { for(int i = 0; i < NUMBER_OF_CYCLES ; i++){ ... } }
例外
hashCode
メソッド内のでマジックナンバーの使用は無視します。
補足事項
-
この内容は以下の、squid の説明文を日本語翻訳したものです。
sonar-java/S109_java.html at master · SonarSource/sonar-java
-
リンク化したら使いやすいかもしれないので、1ルールごとに1ページ化しています。
コメント