Apr 11, 2016 • Alan Batista
No Code Saga temos um desafio, em que surgem muitas dúvidas sobre como solucioná-lo.
Uma característica introduzida no Ruby 2.1 foi o Keyword Arguments e ela pode no ajudar nesse desafio. Vamos ver como isso funciona.
Suponha que você quer um parâmetro opcional, para isso você faria:
O código acima não tem nenhum problema, mas requer do programador que vai usá-lo conhecer no mínimo quais parametros e em qual ordem eles são esperados:
Veja que na segunda execução do método #pagar nós passamos os parametros em ordem diferente da qual eles foram declarados e ainda assim o método funcionou como esperado.
Consegue achar o erro na segunda execução no exemplo acima? Difícil né? Vamos implementar o mesmo código com o keywords arguments:
Pois é, o problema mora quando outro programador (você de amanhã) precisa usar esse código que você escreveu:
Um pouco estranho, né? Você, durante a implementação, achou que colocar o path ou url como primeiro argumento faria todo o sentido, mas esqueceu disso quando foi utilizar o método. É a vida, não é mesmo?!
Não há reais motivos para você sair refatorando todos seus códigos agora, mas é bom considerar keyword arguments quando implementar aquele métodos que a ordem dos argumentos não são lá tão intuitivos quanto parecem a primeira impressão.
Uma boa regra é, poucos argumentos (1 ou 2), que façam sentido na ordem que você implementou, não são necessariamente candidatos para keyword arguments. Métodos com 3 ou mais argumentos podem ser candidatos a um belo Refactoring, mas isso é assunto para outro post ;).