[解決済み】マジックナンバーとは何ですか、なぜ悪いのですか?[クローズド]
2022-03-23 14:06:57
質問
マジックナンバーとは何ですか?
なぜ避けるべきなのか?
適切なケースはありますか?
どのように解決するのですか?
マジックナンバーとは、コード内で数字を直接使用することです。
例えば、(Javaで)ある場合。
public class Foo {
public void setPassword(String password) {
// don't do this
if (password.length() > 7) {
throw new InvalidArgumentException("password");
}
}
}
にリファクタリングする必要があります。
public class Foo {
public static final int MAX_PASSWORD_SIZE = 7;
public void setPassword(String password) {
if (password.length() > MAX_PASSWORD_SIZE) {
throw new InvalidArgumentException("password");
}
}
}
コードの可読性が向上し、メンテナンスもしやすくなります。GUIでパスワードフィールドのサイズを設定するケースを想像してください。もしマジックナンバーを使うと、最大サイズが変わるたびに、2カ所のコードを変更しなければなりません。もし片方を忘れてしまったら、矛盾が生じます。
JDKには、以下のような例がたくさんあります。
Integer
,
Character
と
Math
クラスがあります。
PS: FindBugsやPMDのような静的解析ツールは、コード中のマジックナンバーの使用を検出し、リファクタリングを提案します。
関連
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] 23,148,855,308,184,500は魔法の数字なのか、それとも単なる偶然なのか?
-
[解決済み】キャメルケースの頭字語【終了しました
-
[解決済み] さまざまなアプローチやコンセプトを理解するために学ぶべき重要な言語とは?[クローズド]
-
[解決済み] 2つの角度の差を求めるにはどうすればよいのでしょうか?
-
[解決済み] 単項のブーリアン・トグル演算子を持つ言語はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] カスタムクラス」の意味を教えてください。
-
[解決済み] ディレクトリ作成時にPythonの "FileExists "エラーが発生する
-
[解決済み] O(N log N)の複雑さ - 線形に似ている?
-
[解決済み] 関数は return 文を1つだけ持つべきですか?
-
[解決済み] ランタイムとコンパイルタイム
-
[解決済み] イーガーローディングとは何ですか?
-
[解決済み] さまざまなアプローチやコンセプトを理解するために学ぶべき重要な言語とは?[クローズド]
-
[解決済み] プログラミングにおける "Context "という言葉?[クローズド]
-
[解決済み] パワーメーターの赤と緑の間の色を生成する?
-
[解決済み] 単項のブーリアン・トグル演算子を持つ言語はありますか?