Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal
Estou estudando object calisthenics, e tive algumas dúvidas, sobre:
1) Encapsule todos os tipos primitivos e Strings, mas caso ele tenha comportamento.
O que é uma variável que contem tipo primitivo possui um comportamento?
2) Use coleções de primeiro nível.
Qualquer classe que contenha uma coleção, não deve conter outras propriedades
Então a classe coleção teria somente uma única propriedade?
Ou essa regra diz que a classe coleção pode conter sim outras propriedades, porem que uma dessas propriedades, seja somente exclusiva para guardar as instâncias, que no caso seria as coleções. Correto? Somente uma propriedade teria o privilégio de guardar as coleções.
Exemplo:
class Itens extends Iterator
{
private $itens = [];
public function add(Item $item)
{
// do add
}
public function filter(array $filter)
{
// do filter
}
public function merge(Itens $itens)
{
// do merge
}
}
No exemplo acima, see.. caso a classe Itens precisa-se de mais uma outra qualquer propriedade alem da $items, seria um erro fazer isso? pois só pode conter 1 propriedade
3) Um ÚNICO operador de objeto por linha
Vários níveis de instâncias estão sendo acessado e é isso que deve ser evitado. Correto?
$this->manager->getConfig()->getSegment()->setName("foo");
Neste próximo exemplo, somente um nível sendo acessado. O correto a se fazer.
$filterChain
->addFilter(new Zend_Filter_Alpha())
->addFilter(new Zend_Filter_StringToLower);
Então se for usar interface fluente, sempre usar o mesmo nome de método da instância? E evitar acessar vários níveis de instancias?
4) Sem getters / setters / propriedades
Isso que dizer que devemos evitar getters e setters, sempre que possível??
Li artigos onde falava que getters e setters são perigosos, e devem ser evitados e já outros artigos incentivando o uso.. então fiquei na dúvida dessa regra
Desde já agradeço
Carregando comentários...