Laissez-vous des parenthèses dans ou hors de Ruby? [fermé]

Réponses:

95

Des éléments du style rubis

Ruby vous permet de laisser de côté les parenthèses, en général, résister à cette tentation.

Les parenthèses facilitent le suivi du code. Le style Ruby général consiste à les utiliser, sauf dans les cas suivants:

  • Oubliez toujours les parenthèses vides
  • Les parenthèses peuvent être omises d'une seule commande entourée de délimiteurs ERb - les marqueurs ERb garantissent que le code est toujours lisible
  • Une ligne qui est une seule commande et un seul argument simple peut être écrite sans les parenthèses. Personnellement, je trouve que je fais ça de moins en moins, mais c'est toujours parfaitement lisible. J'ai tendance à ne pas aimer les lignes simples dans le code ruby ​​régulier qui ont plusieurs arguments et pas de parenthèses.
  • De nombreux langages spécifiques au domaine basés sur Ruby (tels que Rake) n'utilisent pas de parenthèses pour préserver une sensation de langage plus naturelle dans leurs déclarations.
Jason Navarrete
la source
27

J'utilise des parens comme commentaires pour aider le futur moi ... qui est susceptible d'avoir moins de cellules cérébrales que le moi actuel :-)

Rien de pire que de regarder un code que vous avez écrit il y a 2 ans et de mal le comprendre, de sorte que vous cassiez quelque chose en le modifiant.

Si les parens me font gagner quelques minutes (ou heures) dans le futur, j'en mettrai autant que nécessaire pour rendre la déclaration limpide.

John
la source
2
+1 "J'utilise les parens comme commentaires pour aider le futur moi ... qui est susceptible d'avoir moins de cellules cérébrales que le moi actuel :-)" C'est tellement vrai, et exactement pourquoi je le fais. C'est aussi être miséricordieux pour tous ceux qui me suivent qui doivent utiliser mon code. En bref, c'est une question de maintenance.
The Tin Man
9

Je les laisse de côté quand je fais des trucs DSL-ish, comme t.column ou has_many in rails. Le reste du temps, cela revient généralement à la clarté, et c'est probablement une répartition égale.

Matt Burke
la source
8

Je suppose que je fais les deux, mais je les garde définitivement si cela ajoute à la lisibilité et évite les déclarations qui semblent ambiguës.

Eli
la source
8

Si vous voulez dire dans les appels de fonction, je mets toujours des parenthèses car c'est toujours plus facile à lire. Si vous voulez dire dans les conditions (si, tant que), je ne mets des parenthèses que lorsqu'elles sont nécessaires.

tapis
la source
2
Je suis d'accord. En php par exemple, je peux rapidement repérer une var par le préfixe $ .. en javascript je peux reconiser une fonction par la parenthèse (). Dans Ruby, la différence entre une var ou une func (sans parenthèses) n'est pas toujours facile à voir.
7

J'essaie de les laisser de côté, si possible. Je pense que cela rend le code plus facile à lire (en général).

mipadi
la source
4

Celui qui est le plus lisible habituellement.

Mais j'utilise toujours des parenthèses lorsque j'emboîte des appels de fonction dans les paramètres d'autres

Gareth
la source
2

J'ai tendance à les laisser de côté lorsque je fais des assertions telles que assert_equal. C'est peut-être pour en faire un langage spécifique à un domaine.

Andrew Grimm
la source
1

Si vous programmez depuis longtemps, vous aurez probablement une «démangeaison» à ajouter des parenthèses, et dans de nombreux cas, il y a de bonnes raisons à cela.

Le code est plus facile à regarder à mon avis, et je n'ai pas encore rencontré de problème - si vous avez besoin de parenthèses, vous le saurez à l'avance avant de devoir exécuter le script de débogage.

boulder_ruby
la source
4
"Mon professeur me dit que c'est inévitable". C'est et peut être difficile à déboguer. Je recommande de les utiliser pour éviter une affectation de paramètres ambiguë.
the Tin Man
L'OMI est une mauvaise raison de laisser de côté les parenthèses autour des arguments de fonction.
Marcello Romani
2
en parlant à la foule des non-parents, j'ai rencontré ce problème l'autre jour, if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine je n'apprends le rubis que depuis quelques semaines maintenant et là où je travaille utilise le plus petit nombre de caractères possible et si vous venez d'une autre langue, il y a un apprentissage courbe pour savoir quand on passe un hachage implicite, un tableau de symboles, en passant des symboles à une fonction ... je ne suis pas fan.
Mega Man
@MegaManif owner.is_a? thing and x > 1
anna328p
1
@DmitryKudriavtsev andn'a pas la même priorité de l' opérateur qui &&a
Mega Man