Single Responsiblity Principle na prática usando Ruby
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
.