Lorsque c'est possible .. laissez-vous des parenthèses dans ou hors de Ruby?
Lorsque c'est possible .. laissez-vous des parenthèses dans ou hors de Ruby?
Réponses:
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.
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.
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.
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.
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.
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.
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.
if owner.is_a? thing and x > 1
and
n'a pas la même priorité de l' opérateur qui &&
a