Se débarrasser de laide si les déclarations

J'ai ce vilain code:

if ( v > 10 ) size = 6;
if ( v > 22 ) size = 5;
if ( v > 51 ) size = 4;
if ( v > 68 ) size = 3;
if ( v > 117 ) size = 2;
if ( v > 145 ) size = 1;
return size;

Comment puis-je me débarrasser de plusieurs instructions if?

  • Avez-vous vraiment dire, 5 et 6 pour être dans cet ordre?
  • Non, je n'ai pas, mon erreur.
  • FWIW, je ne pense pas que c'est particulièrement laid. Il est facile de voir ce qui se passe, il est facile d'ajouter en plus de cas, c'est clair. La seule chose que j'avais envisager de le faire est d'ajouter une liste où les valeurs sont stockées, mais à part ça, je n'ai pas de problème avec ça.
  • Toutes ces réponses et aucun on a choisi un switch, qui est clairement plus adapté pour cela.
  • Comment alors? Ce n'est pas une '==' comparaison.
  • Ce code n'est pas laid! Un "amateur" solution ne fera que rendre votre code plus illisible et difficile à maintenir dans le futur.
  • Je ne vois pas pourquoi un interrupteur de 145 cas est moins moche. Regardez de plus près, un > est utilisé comme équation, pas ==.
  • Donc, ce n'est que le code ne s'v <= 10?
  • sans doute un cas de défaut?
  • Vous ne mentionnez pas où vous avez besoin de ce type de code. Tous ces numéros de magie, je me demande où est-ce utilisé.
  • Cette question est liée au quotidien WTF (donc beaucoup de points de vue): forums.thedailywtf.com/forums/p/20192/234306.aspx On a plus a suggéré un switch à l'intérieur d'un while, qui n'a pas de réponse avant dans cette rubrique. Je ne sais pas si je l'aime plus que l'opérateur ternaire un. Il est également moins efficace.
  • le commutateur à l'intérieur du while est énorme, les frais généraux (ouais je sais, je devrais en parler). Le comparant est le chemin à parcourir, qui jamais vous le faites. Mais imaginez le gaspillage de cycles pour une boucle si le nombre où les plus éloignées.
  • Pour ceux qui sont tentés de prendre la boucle-et-conception de commutateur au sérieux ... c'est une blague! C'est l'une des DailyWTF classique de gags, comme enum BOOL { TRUE, FALSE, FILE_NOT_FOUND };. (Ouais, je sais, expliquant la plaisanterie est boiteux. Mais je ne veux pas de maintenir le code de certains mauvais sap qui l'a pris au sérieux.)
  • IMO ce qui est laid sur le code est l'utilisation de numéros de magie / codé en dur constantes. Pour mes yeux, les multiples IFs ne sont pas un problème, ils sont simple, efficace et lisible, les valeurs des constantes qui sont illisibles...
  • Cette question a suscité un assez grand nombre de créatrice des réponses qui sont toutes de mauvaises idées dans la vie réelle de la programmation...
  • Donc, beaucoup de upvotes sur une réponse simple à une question simple, lorsque la dur de questions et de réponses, ne pas obtenir de upvoted que beaucoup. Est StackOverflow dysfonctionnel?
  • Je vous remercie de votre commentaire, mais c'est le souhait et comme les autres ce qu'ils veulent faire.
  • La LISIBILITÉ sur if..then..else construction en Java(!?) Cette question est l'exemple parfait d'un morceau de code à titre d'exemple et toujours gérer pour faire un non-constructif/controverse/offtopic. Si vous n'aimez pas if..then..else - faites votre propre DSL de développement, si vous ne savez pas sur l'existence de l'interrupteur ... je suppose - apprendre Java mots-clés. Je ne peut que l'aider par downvoting
  • Donner une seconde pensée, cette question a sa propre façon de stimuler la créativité.. un très étrange et inhabituelle de l'effet (un codage concours sur mindless problème). Comment des tags à cette question "laid"?

InformationsquelleAutor kofucii | 2010-09-24