Scrutinizer 宣布的最差 PHP 操作

Worst rated PHP Operations declared by Scrutinizer

我使用 scrutinizer 来分析我的代码,我得到一个声明的函数:

Worst rated PHP Operations

这是函数:

/**
 * 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;
}

这个函数正在做的是尝试在常规中插入 Empty Fighters /齐路

但对我来说,这个方法似乎还可以,我没有看到什么?

有没有更好的实现方式???

误导性名称(可能没有被 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,我不知道这个方法是做什么的,而且为它编写任何单元测试也非常困难。