Olá.
Afim de ver se consigo "refatorar" o código em PdoStudentRepository.php
:
foreach($result as $row){
if(!array_key_exists($row['id'], $studentList)){
$studentList[$row['id']] = new Student(
$row['id'],
$row['name'],
new \DateTimeImmutable($row['birth_date'])
);
}
$phone = new Phone(
$row['phone_id'],
$row['area_code'],
$row['number']
);
$studentList[$row['id']]->addPhone($phone);
}
return $studentList;
Eu fiz dessa forma:
private function fillStudentsIfTheyHasPhones($row):array{
$studentList = [];
if(!array_key_exists($row['id'], $studentList)){
$studentList[$row['id']] = new Student(
$row['id'],
$row['name'],
new \DateTimeImmutable($row['birth_date'])
);
}
$phone = new Phone(
$row['phone_id'],
$row['area_code'],
$row['number']
);
$studentList[$row['id']]->addPhone($phone);
return $studentList;
}
E entao substitui o conteudo do foreach
pela função fillStudentsIfTheyHasPhones
. assim:
foreach($result as $row){
$studentList[]= $this->fillStudentsIfTheyHasPhones($row);
}
E ele me retornou o esperado, mas fiquei com a sensação de que troquei "seis por meia dúzia", o que fiz é uma refatoração válida? Tem algum curso por aqui ou materiais que eu possa estudar pra melhor entender o que de fato seja uma "boa" refatoração?