laravel — худшие рейтинги операций PHP, объявленных Scrutinizer

я использую 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;
}

Эта функция пытается вставить пустых бойцов в обычный
/ однородный способ

Но для меня этот метод выглядит вполне нормально, что я не вижу?

Есть ли лучший способ добиться этого ???

0

Решение

Вводящее в заблуждение имя (вероятно, не подобрано 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, я понятия не имею, что делает этот метод, и было бы очень сложно написать для него какой-либо модульный тест.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]