2. Object Calisthenics
● apresentado em 2008 por Jeff Bay
● Conjunto de regras no código orientado a
objetos, que se concentra em
manutenibilidade, legibilidade, testabilidade e
na facilidade de compreensão.
5. 3
Encapsule tipos
primitivos e
strings
se tiver um comportamento
class User
{
protected $email;
public function create(string $email){
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
throw new Exception('Invalid email address');
}
// ...
}
}
class User
{
// ...
public function create(Email $email){
// ...
}
}
class Email
{
protected $email;
public function __construct(string $email)
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new Exception('Invalid email address');
}
$this->email = $email;
}
}
antes
depois
6. 4
Um -> por linha
● Lei de Demeter: fale apenas
com seus amigos
● Código legível
class User
{
public function listUsers()
{
return $this->email->search('*')->orderBy('DESC');
}
}
9. 7
Limite a
quantidade de
variaveis de
instancia da
classe
class UserData
{
protected $address;
protected $county;
protected $city;
protected $zipcode;
protected $phone;
}
class UserData
{
/**
* @var Address
*/
protected $address;
protected $phone;
}
class Address
{
protected $address;
protected $county;
protected $city;
protected $zipcode;
}
antes
depois
no maximo 5
13. Mais informações
● Livro The Thoughtworks Anthology
● Slides da palestra do Guilherme Blanco
https://www.slideshare.net/guilhermeblanco/php-para-adultos-clean-code-e-o
bject-calisthenics
● Slides da palestra do Alessandro Feitoza
https://slides.com/alessandrofeitoza/voce-teria-1-minuto-para-falar-de-object
-calisthenics#/