Single Responsiblity Principle na prática usando Ruby

Deyvid Nascimento
2 min readDec 20, 2022

--

O Princípio da Responsabilidade Única (SRP, Single Responsibility Principle em inglês) diz que uma classe deve ter apenas um motivo para mudar. Em outras palavras, uma classe deve ter uma única responsabilidade bem definida.

Aqui está um exemplo de uma classe que segue o Princípio da Responsabilidade Única em Ruby:

class User
attr_reader :name, :email

def initialize(name, email)
@name = name
@email = email
end

def send_email
# code to send email to the user
end
end

Neste exemplo, a classe User tem apenas uma responsabilidade: representar um usuário e enviar emails para ele. Ela possui dois atributos, name e email, e um método send_email para enviar emails. Esta classe segue o Princípio da Responsabilidade Única porque ela tem apenas um motivo para mudar - se os requisitos para representar um usuário ou enviar emails para um usuário mudarem.

Como contrast, considere a seguinte classe que não segue o Princípio da Responsabilidade Única:

class User
attr_reader :name, :email

def initialize(name, email)
@name = name
@email = email
end

def send_email
# code to send email to the user
end

def save_to_database
# code to save the user's information to the database
end
end

Neste exemplo, a classe User tem duas responsabilidades: representar um usuário e salvar informações de usuário em um banco de dados. Isso viola o Princípio da Responsabilidade Única porque ela tem dois motivos para mudar - se os requisitos para representar um usuário ou salvar informações de usuário em um banco de dados mudarem.

Para seguir o Princípio da Responsabilidade Única, essas responsabilidades devem ser divididas em classes separadas, como uma classe User e uma classe Database.

--

--