Недавно я обнаружил очень сильный запах кода в одном из проектов, на который я работаю.
Особенно в функции подсчета стоимости. Чтобы подсчитать общую стоимость какой-либо операции, нам нужно передать много видов информации в «класс анализатора».
Например:
- номера телефонов
- выбранных кампаний
- выбранные шаблоны
- выбранные контакты
- выбранные группы
- и около 2-4 типов информации подробнее
Перед рефакторингом все эти параметры были переданы через конструктор в класс Counter (8 параметров, вы можете изобразить это ..).
Чтобы повысить удобочитаемость, я ввел класс Data с именем CostCountingData со читаемыми геттерами и сеттерами для всех этих свойств.
Но я не думаю, что этот код стал намного читабельнее после этого рефакторинга:
$cost_data = new CostCountingData();
$cost_data->setNumbers($numbers);
$cost_data->setContacts($contacts);
$cost_data->setGroups($groups);
$cost_data->setCampaigns($campaigns);
$cost_data->setUser($user);
$cost_data->setText($text);
$cost_data->setTotalQuantity($total_quantity);
$CostCounter = new TemplateReccurentSendingCostCounter($cost_data);
$total_cost = $CostCounter->count();
Можете ли вы сказать мне, есть ли проблема с читаемостью этого фрагмента кода?
Может быть, вы можете увидеть любой запах кода и указать мне на них ..
Единственная идея, которая у меня есть, как сделать рефакторинг этого кода, состоит в том, чтобы разделить этот большой объект данных на несколько связанных между собой типов данных. Но я не уверен, должен ли я это делать или нет ..
Что ты об этом думаешь?