|
Dernière réponse | |
---|---|
Sujet : [Newbie] Vous préferez quoi : Case ou des If imbriqués ? | |
Jubijub | c quoi des hash ?
sous linux si tu met ca comme paramètre lors d'une décompression quelconque, ca te met des ########### de progression....mais en prog ? |
Aperçu |
---|
Vue Rapide de la discussion |
---|
Jubijub | c quoi des hash ?
sous linux si tu met ca comme paramètre lors d'une décompression quelconque, ca te met des ########### de progression....mais en prog ? |
Aricoh | En PERL, j'ai pris l'habitude de gérer mes switch par des hash, chaque clé représente un choix possible
Ca donne parfois un truc illisible mais l'expression apparaît sur une seule ligne |
BettaSplendens | complètement d'accord avec toi Jubijub, c klair que pour la maintenance, c vraiment le mieux, et de toute façon, à la compil, c comme des if imbriqués.. donc je vois pas pourquoi se priver de ça lors du codage, vu que c plus simple et plus compréhensible... en plus y'a moins de risque d'erreur de syntaxe.. CASE poweeeeeeeeeer ;-) |
Jubijub | donc case ou équivalent...
c surement une remarque conne, mais je trouve ca hyper lisible, et simple à maintenir...tu classes les occurences dans l'ordre décroissant de proba pour la rapidité, et tu met les récups d'erreur à la fin... ca donne Case le plus probable ... Case le moins probable Case erreur la plus probable Case erreur la moins probable |
MC | En C, le switch pour la maintenance de code et la lisibilité, le if pour les cas avancés.
Eu niveau compil, le switch et les ifs imbriqués donnent a peu près le même code, sauf quand le nombre de case est elevé, ou le switch est plus optimisé/optimisable |
BENB |
|
BettaSplendens | le CASE, c bcp mieux... sauf si tu n'as que 2 choix, mais sinon c le top quoi !
un IF/ELSE, c trop limité ! |
Jubijub | moi je débute en prog :D |
matafan | Ben disons qu'il faut prendre le problème dans l'autre sens. Il ne s'agit pas de créer son arborescence d'objets puis de constater a posteriori que certains switch portent sur le type d'objet alors que d'autres portent sur un de leur attribut ; il s'agit de créer son arborescence d'objets de façon à ce que ces switch portent autant que possible sur des types d'objets.
On est d'accord, c'est pas toujours possible (enfin surtout, c'est pas toujours intéressant). Mais d'expérience, en java, j'en ai pas fait souvent des switch. |
antp | Bhen je vois pas trop en quoi l'orienté objet peut éviter dans quasi tout les cas les switch et les if imbriqué :/
Ok pas besoin de faire des if objet is TMachin then else if objet is TTruc then else if objet is TBrol then ... Mais y a quand même d'autres utilisations... |
matafan | Le rapport entre mon post et le topic ou entre les switch et le polymorphisme ? |
antp |
|
LeGreg |
|
matafan | Ma remarque est un peu hors-sujet mais avec un bon design objet (donc avec un langage orienté objet, en général), l'emploi de switch ou de if imbriqués devrait vraiment être exceptionnel. Il est bien plus propre, lisible, extensible, maintenable (...) de faire jouer le polymorphisme.
Maintenant c'est sur que des fois ça dépanne, et qu'on ne peut pas toujours se permettre de reprendre le design pour éviter un switch à deux cas. |
antp |
|
gizmo | me suis trompé de nom, c'est pas des string, mais des char, honte sur moi :o |
LeGreg |
|
Jubijub | c vrai que tu peux faire une procédure de translation en string pour comparer... |
THE REAL SMILEY |
|
farib | le probleme du case, c'est que tu ne peux comparer qu'a des constantes |
_gtm_ | Pour un switch sur une string : je pense pas. Mais voici une petite proposition : On prend une fonction qui à une chaine associe un nombre. Comme on écrit des cases, on connait deja toutes les possibilités, donc on peut vérifier si la fonction donne bien un résultat différent pour chaque possibilité. Et ensuite on fait le case sur les nombres calculés. En gros, je propose d'utiliser une fonction de hachage et de faire le case sur le résultat. Il se peut même qu'en perf on y gagne, selon la fonction utilisée, car il n'y a qu'une opération sur des chaines à faire |
Tetragrammaton IHVH |
|
Tetragrammaton IHVH | Le case, c'est fait pour et en plus c'est clair. Le if imbriqué, ça allait au temps du basic... |
verdoux |
|
Jubijub | arf vous m'avez fait peur sur le C++ ...
même en script VDbase 5.5 on peut le faire :D ...c d'ailleurs tout chelou comme language, c un mélange de Dos shell, de basic et de pascal... |
_gtm_ | Ben moi je préfère des fonctions virtuelles et des classes dérivées :D |
THE REAL SMILEY |
|
gizmo | oui mais bon, si je devais dire tout le bien que je pense de java, je serais grossier :D |
THE REAL SMILEY |
|
gizmo | Mais sinon pour répondre à la question original, le case est bien plus lisible, flexible et permet au compilateur de choisir plus facilement la meilleur approche suivant le système. |
gizmo |
|
THE REAL SMILEY | Le Case :bounce: |
juju_le_barbare | visuellement le selon cas est mieux, mais niveau compilation c'est moins bien il me semble...
@++ |
LeGreg | ca depend du langage
en Caml, le pattern matching trop fort. En C/C++, ben tu ne peux faire un switch..case que sur des types entiers donc c'est vite vu.. LEGREG |
chrisbk | boaf depends des cas, generalement si il y a beaucoup de choix un switch/case est ptet mieux, si y'en a juste 2/3 if/else fera tres bien l'affaire..... |
Jubijub | Je sais pas si ca existe pour tous les langages...
en algo ca donne :
[jfdsdjhfuetppo]--Message édité par Jubijub--[/jfdsdjhfuetppo] |