я использую Scrutinizer проанализировать мой код, и я получаю объявленную функцию:
Худший рейтинг операций PHP
Это функция:
/**
* Insert Empty Fighters in an homogeneous way.
*
* @param Collection $fighters
* @param Collection $byeGroup
*
* @return Collection
*/
private function insertByes(Collection $fighters, Collection $byeGroup)
{
$bye = count($byeGroup) > 0 ? $byeGroup[0] : [];
$sizeFighters = count($fighters);
$sizeByeGroup = count($byeGroup);
$frequency = $sizeByeGroup != 0
? (int)floor($sizeFighters / $sizeByeGroup)
: -1;
// Create Copy of $competitors
$newFighters = new Collection();
$count = 0;
$byeCount = 0;
foreach ($fighters as $fighter) {
if ($frequency != -1 && $count % $frequency == 0 && $byeCount < $sizeByeGroup) {
$newFighters->push($bye);
$byeCount++;
}
$newFighters->push($fighter);
$count++;
}
return $newFighters;
}
Эта функция пытается вставить пустых бойцов в обычный
/ однородный способ
Но для меня этот метод выглядит вполне нормально, что я не вижу?
Есть ли лучший способ добиться этого ???
Вводящее в заблуждение имя (вероятно, не подобрано Scrutinizer). Ни в коем случае фактический $byeGroup
Сбор необходим
private function insertByes(Collection $fighters, Collection $byeGroup)
if
оператор, который используется только для извлечения чего-то, что должно было быть параметром метода.
$bye = count($byeGroup) > 0 ? $byeGroup[0] : [];
$sizeFighters = count($fighters);
$sizeByeGroup = count($byeGroup);
Другая if
утверждение, которое добавляет сложности. Также использует слабое сравнение.
$frequency = $sizeByeGroup != 0
? (int)floor($sizeFighters / $sizeByeGroup)
: -1;
// Create Copy of $competitors
$newFighters = new Collection();
$count = 0;
$byeCount = 0;
Содержание этого foreach, скорее всего, должно идти отдельным методом.
foreach ($fighters as $fighter) {
И это сложное состояние в еще одном if
оператор (который также содержит слабое сравнение), также должен быть лучше в хорошо названном приватном методе.
if ($frequency != -1 && $count % $frequency == 0 && $byeCount < $sizeByeGroup) {
поскольку $bye
может быть пустым массивом, это не имеет смысла.
$newFighters->push($bye);
$byeCount++;
}
$newFighters->push($fighter);
$count++;
}
return $newFighters;
}
TBH, я понятия не имею, что делает этот метод, и было бы очень сложно написать для него какой-либо модульный тест.
Других решений пока нет …