Магические числа — один из способов писать чистый код.
Теперь мы поговорим о важном принципе, который облегчает чтение и изменение кода, чтобы код имел приятный запах.
Во-первых, давайте объясним, что такое код. запахи есть. Запах кода — это индикатор проблем, которые можно решить в ходе рефакторинга. Это легко обнаружить, а обнаружение также исправляет их.
Предположим, что после того, как вы закончите задачу кодирования, которая занимает у вас 8 часов, и скажете «ОМГ», в конце концов закончите, это займет много времени! И вы вставили свой код, и куча кода выглядит так.

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

Вы знаете, что вычет составляет 3,3 процента государственных налогов и 2,3 процента налогов на медицинские услуги.

Теперь бригадиру нужно изменить медицинские услуги на 3,5 процента, и он приказывает сделать это вашему другу.
Теперь ваш друг смотрит на код, и у него возникает такое впечатление: какой номер налога на медицинские услуги 3,3 или 2,3. ?🤔️

Так что теперь проблема очень ясна. Вы используете уникальное значение с необъяснимым значением, что и означает магическое число. Лучше использовать именованную константу для идентификации вашего магического числа. Давайте проведем рефакторинг вашего кода.

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

Теперь ваш друг может легко заметить, какая из них является медицинской службой, и он может легко изменить значение переменной. Кроме того, если эта переменная используется в нескольких местах кода, это сэкономит ему время на изменение одного места вместо нескольких мест.

Теперь вы спрашиваете, а как насчет 100? Разве это не магическое число?
Я скажу нет, это не магическое число; мы можем заметить, что мы рассчитали процент, так что это очень ясно и прямолинейно. Это похоже на цикл for, например:

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

Здесь инициализация счетчика ( i ) нулем, вероятно, уместна; очевидно, для чего служит ноль.

Подводя итог, мы заметили, что магические числа вызывают некоторые конфликты, поэтому мы должны учитывать это при рефакторинге, чтобы не совершать этих ошибок.

Спасибо за чтение. Я надеюсь встретиться с вами в моей следующей статье.

Некоторые ссылки для дополнительного чтения:
https://en.wikipedia.org/wiki/Magic_number_(programming)
«https://refactoring.guru/replace-magic-number-with-symbolic -постоянный"