comme ceci: p>
Si cela était littéralement le seul endroit où j'avais besoin de ce calcul spécifique, existe-t-il un point dans la fabrication d'un met "aujourd'hui mon ostrich posé # {@ œufs_laid - @stillborn - @wolves_ate} oeufs valides." code> p>
valide_ggs code> fonction? P>
5 Réponses :
Ce n'est pas intrinsèquement mauvais. Mais si l'expression est complexe, elle réduit la lisibilité du code. Ici, je mets les deux extraits ici, que l'on lit mieux?
Cela vaut-il vraiment la peine d'avoir une variable temporaire utilisée à un endroit au lieu d'un ensemble d'actions parfaitement lisibles. Je conviens qu'il y a des endroits où il serait plus lisible, mais dans ce cas, il est discutable.
@Abizern éventuellement, oui: il est i> lisible à l'intérieur de la chaîne. Mais c'est à l'intérieur de la chaîne et il y a un commutateur cognitif impliqué, je préfère généralement éviter.
@ABIZERN: J'extraînerais cette expression dans le Var local, si c'est ce que vous demandez. Rend la chaîne plus facile à lire.
Et je ne serais pas offensé par elle. :)
Voir, c'est la chose; Le second a l'air plus agréable, mais il est techniquement plus long et, puisque je ne fais que le calcul une fois, aussi inutile.
"C'est techniquement plus long" - êtes-vous à court d'encre, je me demande? :) Pourquoi sacrifier la lisibilité de la brièveté?
absolument pas. Mettre le code à l'intérieur mais note que # {...} code> Les interpolateurs sont une partie légitime du plaisir à Ruby. Pour la lisibilité, vous pourriez envisager: % code> interpolation et # {...} code> interpolation sont deux types différents de amusant, qui ne sont pas complètement interchangeables. p> p>
+1 i> pour cette réponse et spécialement pour mentionner % d'interpolation et # {...} l'interpolation sont deux types de plaisir différents i>.
Merci de répondre!
Je pense que cela est clair - au moins vos noms de variables ont un sens. Un puriste peut dire que vous devriez l'extraire à une méthode - mais vraiment - Yagni (vous n'aurez pas besoin de cela) s'applique également à Ruby. P>
Si vous avez besoin de le faire dans une seconde place, je en ferais une méthode. Vous y avez déjà pensé. P>
Droit sur. Je me demandais juste s'il y avait une sorte de tabou.
Ceci est une pièce d'opinion: oui et non. p>
Si c'est "complexe" 1 sup> Cela appartient probablement ailleurs. P>
Si c'est "simple" 2 sup> Ce n'est pas un problème. P>
Tout est réduit à la lisibilité, à la maintenabilité, à la réutilisation appropriée et à ne pas faire quoi que ce soit stupide. p>
1. Pour différentes valeurs de "complexe".
2. Pour différentes valeurs de "Simple".
sup> p>
Évidemment, cela est discutable, comme un autre états de réponse. P>
Un cas dans lequel vous devriez définitivement extraire les opérations est quand ils ont des effets secondaires. P>
Tant que l'expression est transparente de manière transparente, il ne s'agit que d'une matière de goût et de lisibilité subjective. P>
Que voulez-vous dire "quand ils ont des effets secondaires"?
en.wikipedia.org/wiki/ide_effect_(Computer_science)
Je sais que j'ai mis une réponse, mais ce n'est vraiment pas une question constructive. C'est une énoncé aussi simple que cela pourrait aller dans les deux sens, quelque chose de plus complexe et la plupart des gens recommanderont une extraction. J'ai tendance à avoir une pratique de travail où, si je reviens à un tel code après un moment et que ce n'est pas instantanément b> claire ce qu'il fait, alors il vaut la peine d'être extraite parce qu'il est prouvé qu'il manquait de clarté .
Vous et plusieurs autres utilisateurs de très hauts représentants Tous i> répondis, au lieu de jeter vos votes proches. C'est complètement i> subjectif, au point où la réponse des top-vote, par un utilisateur de 71k Rep, commence par "Ceci est un avis". Ceci est expressément pas i> quel débordement de pile est pour.
Correction - J'ai lancé un vote étroit, juste avant d'ajouter mon commentaire.
Votre code a deux responsabilités, calculant
valide_ggs code> et imprimante / formatage d'une ligne. Vous devez séparer le calcul de la présentation.@maegar: Complètement subjectif? Je pense que l'utilisateur dit très clairement "si c'était littéralement le seul endroit", et demande à faire de la méthode
valide_ggs code>. Je pense que «non» la réponse est complètement évidente, ce que même l'utilisateur sait: ZE veut un commentaire «Non».@BorissTnicky non, c'est complètement subjectif. Je ferais une méthode. Étant donné que nous utilisons l'instance
@variables code>, je suppose que nous sommes dans une classe, et je m'attendrais à ce que le calcul deoeufs_left code> soit une méthode de classe simple. Votre propre réponse exprime une opinion complètement différente que la mienne, et ni i> l'opinion n'est plus correcte parce que c'est complètement subjectif i>.@maegar: refroidissez-vous et remarquez-vous. Vous avez utilisé le mot «opinion» deux fois et «complètement» trois fois. Les églises et les gouvernements postmodern ont déjà démontré que "tout n'est qu'une question d'opinion", de sorte que vous n'êtes pas obligé.
@Borisstnicky Je ne pense pas qu'il y ait quelque chose d'évident à propos d'une réponse "non". J'avais tendance vers une méthode aussi bien parce que l'expression a une odeur logique d'entreprise et, en tant que telle, je le trouve testable, donc isolativement. Gardons les trucs intra-personnels ailleurs.
J'ai répondu à la question parce que même si c'est une pièce d'opinion, je pense que la connaissance des compromis est précieuse. Je ne constate pas que cette question conduirait à des discussions prolongées en raison de sa simplicité, alors pendant que je pense que la fermeture est correcte, je pense aussi à répondre à cela est informatif / éducatif.