Quando possível .. você deixa parênteses dentro ou fora em Ruby?
Quando possível .. você deixa parênteses dentro ou fora em Ruby?
Respostas:
Ruby permite que você omita parênteses, em geral, resista a essa tentação.
Os parênteses tornam o código mais fácil de seguir. O estilo geral do Ruby é usá-los, exceto nos seguintes casos:
- Sempre deixe os parênteses vazios
- Os parênteses podem ser omitidos em um único comando rodeado por delimitadores ERb - os marcadores ERb garantem que o código ainda esteja legível
- Uma linha que é um único comando e um único argumento simples pode ser escrita sem o parêntese. Pessoalmente, acho que faço isso cada vez menos, mas ainda é perfeitamente legível. Eu tendo a não gostar de linhas únicas no código ruby regular que têm vários argumentos e sem parênteses.
- Muitas linguagens de domínio específicas baseadas em Ruby (como Rake) não usam parênteses para preservar uma sensação de linguagem mais natural em suas instruções.
Eu uso os parênteses como comentários para ajudar o futuro eu ... que provavelmente terá menos células cerebrais do que o meu atual :-)
Nada pior do que olhar para algum código que você escreveu há 2 anos e entendê-lo mal, de forma que você quebre algo enquanto o modifica.
Se os parênteses vão salvar o futuro de alguns minutos (ou horas) no futuro, colocarei tantos quantos forem necessários para tornar a declaração cristalina.
Eu os deixo de fora quando estou fazendo coisas do tipo DSL, como t.column ou has_many in rails. No resto do tempo, geralmente se resume à clareza e é provavelmente uma divisão uniforme.
Se você quer dizer em chamadas de função, sempre coloco parênteses porque é sempre mais fácil de ler. Se você quer dizer em condições (if, while), só coloco parênteses quando são necessários.
Eu tendo a deixá-los de fora ao fazer afirmações como assert_equal. Talvez seja para torná-lo semelhante a uma linguagem de domínio específico.
Se você já programa há muito tempo, provavelmente terá vontade de adicionar parênteses e, em muitos casos, há boas razões para isso.
O código é mais agradável para os olhos, na minha opinião, e ainda não tive nenhum problema - se você precisar de parênteses, saberá de antemão antes de executar o script de depuração.
if owner.is_a? thing //worked fine
if owner.is_a? thing && x > 1 //not fine
estou aprendendo ruby há apenas algumas semanas e onde trabalho usa a menor quantidade de caracteres possível e se você vier de qualquer outra língua, há um aprendizado curve para saber quando você está passando um hash implicitamente, um array de símbolos, passando de símbolos para uma função ... não sou um fã.
if owner.is_a? thing and x > 1
and
não tem a mesma precedência de operador que &&
tem