Um pequeno passo para você, um grande salto para o seu código
Algumas dicas de Ruby e Rails que o tornará um programador melhor.
Desde que entrei na Nexoos, a pouco mais de um ano, tenho trabalhado a maior parte do tempo com Ruby on Rails. Foi um ano intenso de muito aprendizado ao lado de profissionais excepcionais, isso tem feito toda diferença. Umas das coisas que procuro fazer com frequência é pensar sobre o trabalho que tenho feito regularmente, aliás essa é uma das inúmeras dicas do livro The Pragmatic Programmer: from journeyman to master escrito por David Thomas (um livro que todo desenvolvedor deveria ler).
“Pensar sobre o trabalho”, significa desligar o piloto automático e tomar o controle da situação, é criticar e avaliar constantemente o seu trabalho além de aceitar as avaliações e críticas de outras pessoas. Aqui na Nexoos, temos uma cultura de colaboração e aprendizado. Profissionais com experiências e perspectivas diferentes, mas que juntos produzem e inovam o tempo todo com o objetivo que todos atinjam o sucesso coletivamente. Várias cabeças pensando juntas pensam muito melhor do que várias cabeças pensando sozinhas, e o time de tecnologia tem levado isso a sério através de code reviews, meetings, treinamentos e discussões, onde todos mantém humildade para aprender e disponibilidade para ensinar.
Durante esse tempo, recebi muitas dicas de pessoas mais experientes que eu que tem me ajudado a melhorar como desenvolvedor. E dicas são como roupas, sempre devem ser passadas. Ok, a piada foi ruim, mas as dicas são boas, então vamos a elas.
Ruby é simples na aparência, mas complexo por dentro. Daí a importância de manter a legibilidade do seu código, mantendo um padrão de escrita e boas práticas para se ter um código mais claro e fácil de interpretar.
1 -Hash#dig, introduzido a partir da versão 2.3 do ruby, #dig é basicamente um Elvis Operator para hashes e arrays, ou seja, o popular operador binário.
Muitas vezes precisamos fazer algo do tipo:
Utilizando o método dig, você pode simplificar para algo assim, menos verboso e mais elegante. 👏
2 -Struct.
A classe Struct, é uma estrutura do tipo builder. Essa classe é responsável por definir novos tipos de estruturas que por sua vez, podem gerar outras estruturas posteriormente.
Em ruby é comum algo do tipo:
Utilizando a class Struct, você pode definir uma nova estrutura passando os parâmetros como símbolos e eles estarão disponíveis por todo o escopo da sua classe.
3 -Object#presence_in
O método #presence_in permite substituir condicionais (geralmente ternários) por chamadas de método quando você não precisa de um resultado booleano como retorno, mas sim do próprio objeto verificado.
Suponhamos que você tenha um código parecido com esse:
Usando o #presence_in, ficaria algo do tipo:
4 -Object#present? && #presence
Esta é uma dica simples, mas importante: o #presence retorna o objeto caso esteja presente e nil caso não esteja, diferente do seu primo #present? que retorna true ou false na mesma situação.
5 -Enumerable#reduce ou #inject (que são a mesma coisa, #reduce é um alias de #inject)
Suponhamos que o nosso código se pareça com isso:
Obviamente você poderia melhorar isso como uma pegada mais "rubysta" fazendo algo do tipo:
Ou fazer a coisa "like a boss" utilizando o #reduce ou #inject, ficaria assim:
Bem melhor, simples e elegante. 👏
Para um bom código não basta apenas funcionar, é preciso atender a alguns requisitos mínimos de qualidade e aqui voltamos ao início desse texto quando falamos em "pensar sobre o trabalho regularmente", avaliar e evoluir sempre.
Até a próxima.