1
resposta

[Dúvida] Função validaNome

Eu poderia deixar somente a função validaNome, já que ela atribui valor para $nome assim que a função da certo?

Eu estava olhando aqui e achei meio repetitivo já que assim que a função validaNome da certo ela atribui o valor para $this->nome.

estou usando php 8.3

Antes


 public function __construct(Cpf $cpf, string $nome, Endereco $endereco)
    {
        $this->cpf = $cpf;
        $this->validaNome($nome);
        $this->nome = $nome;
        $this->endereco = $endereco;
    }
    
 private function validaNome(string $nome)
    {
        if(mb_strlen($nome) < 5){
            echo "Nome precisa ter mais de 5 caracteres";
            exit();
        }
        $this->nome = $nome;


    }
    
    -------------------------------------------------------------------------------------------------------
    Depois
    
        public function __construct(Cpf $cpf, string $nome, Endereco $endereco)
    {
        $this->cpf = $cpf;
        $this->validaNome($nome);

        $this->endereco = $endereco;
    }

    
    
1 resposta

Olá!!! Pode sim... realmente está tendo uma duplicidade na atribuição do dado.

Mas, pensando um pouco em responsabilidade do método, você poderia colocar a validação no início e não atribuir o valor, sendo assim, mantém-se a responsabilidade de apenas validar a informação.

 public function __construct(Cpf $cpf, string $nome, Endereco $endereco)
 {
        $this->validaNome($nome);
        $this->cpf = $cpf;
        $this->nome = $nome;
        $this->endereco = $endereco;
 }
    
 private function validaNome(string $nome)
 {
        if(mb_strlen($nome) < 5){
            echo "Nome precisa ter mais de 5 caracteres";
            exit();
        }
 }

Bons estudos!!!