devrait être facile. Je pensais, de la lecture Ce blog post que je pourrais retourner quelque chose juste après mon Qu'est-ce que j'aimerais vraiment faire est de loger la raison de la prochaine ligne sur la même ligne: p>
Je ne trouve aucune discussion sur cet usage de Deux questions: P>
Commande suivante code>: p>
suivant "nouvelle valeur" si axis_range == "Test" code> p>
suivant @ LOGGER.INFO ('Sauter cet élément car pour le plaisir') Sauf si (Elephants.Size> 0) Code> P> P>
Suivant code> sur Ruby Doc . Le code fonctionne certainement. Je me rends compte que je peux le faire avec un sauf si code> bloc mais la ligne de code est tellement concise. P>
suivant code> un peu impair et non "ruby-ish"? li>
ul>
3 Réponses :
Ma première impression est que c'est assez évident que le mot clé code> suivant est dans le contexte d'une boucle - c'est une bonne chose. Le fait que Qu'est-ce qui me jette est que Bien que le code puisse être plus concis, il est difficile de comprendre. Je commenterais soit ce que le code fait ou va avec autre chose. P>
Néanmoins bon appel à vos deux questions. Je serais heureux d'être un développeur de maintenir votre code avec ce type d'état d'esprit! P> "nouvelle valeur" code> est le résultat de suivant "nouvelle valeur" code> est un peu d'étirement, mais je peux y arriver. P>
suivant @ logger.info ('Sauter cet article parce que pour le plaisir') code> serait probablement difficile de comprendre. Il n'est vraiment pas évident que le résultat de l'appel code> info code> va être renvoyé par suivant code> et je crois que beaucoup de Devs seraient jetés par celui-ci. P>
Je ne poserais pas de problème inhéremment à celui-ci, à moins que ce n'était juste au milieu de beaucoup d'autres codes compliqués (j'essaie de la moyenne de 2 location locale, généralement un ou deux de 4 à 8 lignes de long, et un groupe qui ne sont qu'une ligne, une moyenne de la moyenne). P>
Si le code est long et difficile à comprendre, j'ai eu beaucoup de succès à tirer la méthode dans son propre objet. J'ai juste que la méthode instanciate d'un objet qui fait sa tâche et la pose pour le résultat, le code peut être beaucoup plus simple, réduisant souvent la boucle à une seule ligne ou deux et lui permettant d'avoir une méthode qui compte cette journalisation, laquelle Vous pouvez ensuite gérer avec un appel simple à Log_Error ou quel que soit le nom que vous pensez être approprié. P>
Ces jours-ci, je considère que les méthodes de procédure complexes doivent être une odeur qu'il existe un objet gestant dans cette méthode. P>
"Comme le
retour code> etbreak code> mots-clés,suivant code> peut être utilisé seul, ou il peut être suivi d'une expression ou d'une liste séparée par des virgules de expressions. LorsqueSuivant code> est utilisé dans une boucle, toutes les valeurs suivantesSuivant code> sont ignorés. Dans un bloc mais l'expression ou les expressions devenir la "valeur de retour" de la déclaration code> de rendement code> qui a appelé le Bloc. "(Le langage de programmation Ruby, David Flanagan & Yukihiro Matsumoto, 2008, page 150) P>Le livre donne cet exemple: p>
xxx pré> et cette alternative: p>
xxx pré> blockQuote>
Squareroots = data.Collect {| x | (x <0)? 0: math.sqrt (x)} code> (opérateur ternaire est meilleur dans ce cas)
Dans le premier exemple, le suivant ... code> La déclaration se comporte comme une clause de garde. Je l'aime bien. Merci!