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,我不知道这个方法是做什么的,而且为它编写任何单元测试也非常困难。
我使用 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,我不知道这个方法是做什么的,而且为它编写任何单元测试也非常困难。