私のコードでは、メッセージ「100」がマジックナンバーであるという警告が表示されます。以下のコードを参照してください。
int randomNo = generator.nextInt(100);
私はここでそれを読みました マジックナンバーとは何ですか、そしてなぜそれは悪いのですか? しかし、私はこれを単一の場所で使用しているので、静的で変数を作成することによって100を宣言することはより多くのスペースを占めるでしょう。これを解決する正しい方法は?
public static final int HUNDRED= 100;
なにか提案を?
HUNDRED
は本当にばかげていますが、なぜ100を選んだのですか?その意味は何ですか?
何かのようなもの:
public static final int RANDOM_UPPER_LIMIT=100;
または、値の使用目的に応じて、さらに有益な情報を提供します。
public static final int MAX_NUMBER_OF_COLORS=100;
より意味があり、読みやすさが向上します。
この場合、スペースの節約を考慮する必要はありません。変数を宣言する場合のスペースのオーバーヘッドは、そのような場合は完全に無視できます。
それは実際にはストレージとは関係ありません、それは読みやすさです。いくつかの番号を変更したい場合は、コードで見つけるのが難しい場合があります。それが一番上にある場合は、それが優れています(構成ファイル内にある場合は、多くの場合、さらに優れています)。
はい、それは良い解決策です。
そのファイルの外部でそれを必要としない場合は、それを「プライベート」にする必要があります。さらに読みやすくし、次のように実際の意味を示す名前を使用することをお勧めします。
MAX_RANDOM_NUMBER=100
それが何のために使われるかをもっとよく
MAX_RANDOM_FOR_CARD_SELECTION
またはそのようなもの。
このように、20枚の新しいカードを追加したために5か月後にそのファイルを調べてみると、コードを見なくても何を変更する必要があるかが完全に明らかです。
ロバートマーチン(ボブおじさん)をチェックしてください
クリーンコード
徹底的な説明(またはコーディングスタイルに関するその他のガイド)のための本。基本的に、ハードコードされた「100」は、コードの読者にとって何の意味もありません。アプリを使い終わってから6か月経っても、何の意味もありません。コードに表示されるので(100件中99件)、ほとんどどこからともなくマジックナンバーです。なぜ99や101ではなく100なのですか?アプリが乱数の生成を100に制限し、上(または下)に制限しないのはなぜですか?
まとめると、それはあなた自身にとってあなたのコードの読みやすさの問題であり、あなたのコードの現在または将来の読者にとって、それはコーディングスタイルの問題です。
最短のコードではなく、理解しやすく、保守しやすいコードを書くのは良いことです。この100
を定数に保存すると、それが本当に100
である理由を説明する適切な名前を追加できます。たとえば、ランダムスコアを生成する場合、可能な最大スコアが100
の場合、次のように定義できます。
static final int MAX_SCORE = 100;
その後、他の場所でも使用できます。なぜそれが100で他に何もないのか誰もが理解するでしょう。そして、いつかそれをたとえば200に変更する必要がある場合は、コードを検索せずに1か所で置き換える必要があります。
また、プログラムの他の部分で、意味の異なる100が含まれる可能性もあります(たとえば、MAX_PERCENT
)。 MAX_SCORE
を200に変更したいが、MAX_PERCENT
はそのままにしておく場合は、定数を個別に設定するとはるかに簡単になります。