Truque interessante para parar de retratar argumentos

É uma manhã tranquila de domingo e estou mexendo no meu projeto paralelo. Quando olho para o objeto de serviço que estou escrevendo, me pego vendo o mesmo padrão … novamente. # É isso que eu continuo fazendo. Classe UserService def self.create (nome:, email:, permissões 🙂 novo (nome: nome, e -mail: email, permissões: permissões) .Save final def Initialize (nome:, email:, permissões 🙂 @name = name @Email = email @Permissions = permissões end defesa “Saving user #{ @} …” Tudo o que estou realmente fazendo é pegar argumentos e passando -os diretamente para o novo. Funciona, mas parece desajeitado. Toda vez que adiciono um novo argumento para inicializar, por exemplo, um parâmetro de idade, tenho que atualizá -lo em dois lugares. Hoje é um pequeno aborrecimento, mas amanhã é uma receita clássica para insetos. Em algum lugar ao longo do caminho, li sobre o argumento de Ruby, encaminhando a sintaxe (…). Eu preciso queimar isso no meu cérebro, porque isso facilita muito a vida. Aqui está a reescrita para o meu futuro: # é assim que eu deveria fazer isso. Classe UserService def self.create (…) novo (…). Salvar # <- muito melhor definir final inicialize (nome:, email:, permissões 🙂 @name = name @email = email @permissions = permissões end def junto.” Limpar. Simples. Feito. Por que isso é melhor está seco. Não há mais nome repetido:, email:, permissões: duas vezes. Menos digitação, menos desordem. É resiliente. Se eu adicionar idade: para inicializar, o Self.Create não precisa de uma única alteração. O encaminhamento de argumentos cuida dela automaticamente. Ele cobre tudo. Args posicionais, palavras -chave args e até blocos. O … O operador encaminha tudo. E se eu precisar interceptar apenas um argumento enquanto passa pelo resto, digamos para o log, isso também é fácil: def self.create (nome:, …) # pegue `name`, encaminhe o resto coloca” para criar um usuário chamado # {name} … “new (nome: name, …) End End Mode FullScreen Mode Full Mode Memo para uso auto -uso … para encaminhamento. Ele mantém o código mais limpo, evita duplicação e salva o futuro-de dores de cabeça desnecessárias.

Fonte

Você pode ter perdido