Object
Calisthenics
em 10 minutos
@jucycabrera
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.
1
Um nível de
indentação por
método
2
Não use ELSE
Você pode substituir o else
por early return
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
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');
}
}
5
Não abrevie
● Use nomes claros
● Única responsabilidade
6
Mantenha as
classes
pequenas
● 200 linhas
● 10 métodos
● 15 - 20 linhas por método
●
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
8
Use Collections
● Uma única propriedade
● interfaces SPL
● Filtros, ordenação etc
9
Não use getters
e setters
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#/
Obrigada
@jucycabrera

Object Calisthenics em 10 minutos

  • 1.
  • 2.
    Object Calisthenics ● apresentadoem 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.
  • 3.
  • 4.
    2 Não use ELSE Vocêpode substituir o else por early return
  • 5.
    3 Encapsule tipos primitivos e strings setiver 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 -> porlinha ● Lei de Demeter: fale apenas com seus amigos ● Código legível class User { public function listUsers() { return $this->email->search('*')->orderBy('DESC'); } }
  • 7.
    5 Não abrevie ● Usenomes claros ● Única responsabilidade
  • 8.
    6 Mantenha as classes pequenas ● 200linhas ● 10 métodos ● 15 - 20 linhas por método ●
  • 9.
    7 Limite a quantidade de variaveisde 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
  • 10.
    8 Use Collections ● Umaúnica propriedade ● interfaces SPL ● Filtros, ordenação etc
  • 11.
  • 13.
    Mais informações ● LivroThe 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#/
  • 14.