マジックナンバー

Mar 04 2023
マジック ナンバーは、きれいなコードを書くための方法の 1 つです。ようこそ、私の友人、今度は、コードを読みやすくし、コードを変更して良い香りを持たせるための重要な原則について話します。

マジック ナンバーは、きれいなコードを記述する方法の 1 つです。
ようこそ、私の友人。これからは、コードを読みやすくし、コードを変更して良い香りを持たせるための重要な原則について話します。

まず、コード スメルとは何かについて説明します。コード スメルは、リファクタリング中に対処できる問題の指標であり、簡単に見つけて発見し、修正することができます。

8 時間かかるコーディング タスクを終えた後、OMG が最終的に完了したと言うのですが、時間がかかります!!! そして、コードをプッシュすると、コードの束が次のようになったとします。

double deductFromStanderdEmployee(JouniorEmployee standerdEmployee){
 standerdEmplyee.gross= standerdEmplyee.gross - (3.3 + 2.3) / 100 * standerdEmplyee.gross;
}

今度はチームリーダーが医療サービスを 3.5% に変更する必要があり、あなたの友人にそうするように命令しました。
あなたの友人はコードと感想を見て、医療サービス税は 3.3 と 2.3 のどちらの数字ですか?️

これで、問題は、魔法の数の意味である説明のない意味を持つ一意の値を使用していることが非常に明確になります。マジックナンバーを識別するには、名前付き定数を使用することをお勧めします。コードをリファクタリングしましょう。

const double GOVERNMENTAL_TAXES_PERSENTAGE=3.3;
const double MEDICAL_SERVICES_TAXES_PERSENTAGE=2.3;
double deductFromStanderdEmployee(JouniorEmployee standerdEmployee){
 standerdEmplyee.gross= standerdEmplyee.gross - (GOVERNMENTAL_TAXES_PERSENTAGE + MEDICAL_SERVICES_TAXES_PERSENTAGE) / 100 * standerdEmplyee.gross;
}

今あなたは、100 は魔法の数字ではないのではないかと尋ねています。
いいえ、これは魔法の数字ではありません。パーセンテージを計算しているので、非常にクリアで行き詰まっていることがわかります。たとえば、for ループのようなものです。

for (int i=0;i<n;i++){
    //some code here;
}

要約すると、マジックナンバーがいくつかの矛盾を引き起こすことに気付きました。そのため、それらの間違いに陥らないように、リファクタリングの際にそれをよく認識する必要があります。

読んでいただきありがとうございます。次の記事でお会いできることを楽しみにしています。