ВОЛШЕБНЫЕ ЧИСЛА

Mar 04 2023
Магические числа — это один из способов написания чистого кода. Добро пожаловать, друг мой, сейчас мы поговорим о важном принципе, который облегчает чтение и изменение кода, а также придает ему приятный запах.

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

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

предположим со мной, что после завершения вашей задачи по кодированию, которая занимает у вас 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;
}

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

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