Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Single Responsibility Principle

Se uma classe deve ter apenas uma responsabilidade, sendo bastante rígido, ela não se pareceria com um módulo normal da programação procedural já que teria apenas um método no final das contas ?

Qual a vantagem ?

5 respostas

Oi Marcelo, tudo bom?

Repare que uma responsabilidade só não significa uma unica funcionalidade.

Quando descrevemos, por exemplo, uma conta bancaria em orientação a objetos criamos uma classe parecida com:

class Conta {
    private $saldo;

    public function getSaldo(){
        return $this->saldo;
    }

    public function deposita($saldo){
        $this->saldo += $saldo;
    }

    public function saca($saldo){
        $this->saldo -= $saldo;
    }
}

A unica responsabilidade dessa classe é descrever uma conta. Uma conta faz deposito, faz saque. Temos uma unica responsabilidade, porém muitas funcionalidades.

Uma classe muito pequena pode ser um problema, inclusive, que remete ao Short Class code smell. Da mesma forma que uma classe muito grande fere (ou não) o principio de single responsability.

Se a gente fosse representar algo extremamente complexo, é bem capaz que reflita em uma classe muito complexa também. Não significa que estamos com mais de uma responsabilidade naquela classe, só que realmente é algo complexo de se representar =)

Espero ter ajudado.

Abraço e bons estudos!

Grande André!

Depois que postei refleti melhor, hehehe... Realmente, é sobre ter uma funcionalidade e não estritamente um método apenas.

Mudando de assunto mas ainda relacionada a short class code smell : o que você acha de uma aplicação MVC com, em seu model, uma classe Aluno que tenha algumas propriedades privadas que espelhem os campos da tabela correspondente no banco de dados e alguns getters e setters apenas ? Cheia mal ? hehehe

Acho tranquilo. Uma entidade com algumas propriedades mapeadas no banco é um caso bem comum inclusive =)

Um caso bem comum de code smell ?

solução!

Um caso comum de código mesmo =)

Normalmente rola bastante entidades com algumas propriedades, getters e setters.