Dependências entre um objeto / SRP
Criei uma classe Usuários:
<?php
class User
{
private $_name;
public function setName($name)
{
if (strlen($name) < 2) {
throw new User_Exception('');
}
if (!preg_match('#^[\w -]+$#u', $name)) {
throw new User_Exception('');
}
$this->_name = $name;
}
public function getName()
{
return $this->_name;
}
// Mais código ...
}Percebi que o método setName faz muita coisa, quebrando o princípio da responsabilidade única. Primeiro ele verifica se o nome passado não está vazio, depois verifica se o nome é válido ... Então eu pensei em mover as validações para outros métodos privados, tendo cada método fazendo apenas uma coisa.
Em outras situações eu poderia separar em classes ... A validação de um e-mail, por exemplo. Um usuário não deve saber como validar um e-mail. Dessa forma, eu separaria os conceitos, só que teria que lidar com mais uma classe, gerando uma dependência. Por outro lado, eu poderia aproveitar a mesma classe em outras partes da aplicação.
Agora imaginem que meu objeto User tenha relação com mais classes de validação. Não quero instanciar os objetos de validação dentro da classe User porque isso geraria um acoplamento alto. Se eu passar as dependências por paramêtro terei muitos parâmetros ... Como vocês lidariam com isso? Até onde devo dividir uma classe/método? Quanto mais dividir, mas dependências/objetos para manipular.
Valeu.
Discussão (6)
Carregando comentários...