Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2877 connectés 

 


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 ?

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


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

Matafan a écrit a écrit :

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.  




comment prendre un canon pour tuer une mouche...
 
chaque fois que tu as des switch/case dans une fonction tu dois declarer une hierachie de classe ? bonjour l'efficacite !

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

Matafan a écrit a écrit :

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.




 
:heink:
C'est quoi le rapport ?

LeGreg

Matafan a écrit a écrit :

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.




 
design objet, design objet..
ca remplace juste le switch sur des types
pas sur des valeurs..

Code :
  1. switch (nbChambres) {
  2.   case 0 :
  3.     print "aucune chambre";
  4.   case 1 :
  5.     print "une chambre";
  6.   case 2 :
  7.     print "deux chambres";
  8.   default :
  9.     print "plein de chambres";   
  10. }


 
mais je dois etre de la vieille ecole..
 
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

juju_le_barbare a écrit a écrit :

visuellement le selon cas est mieux, mais niveau compilation c'est moins bien il me semble...
 
@++  




 
Moi j'avais entendu dire le contraire...
Ce qui semblerait logique, le compilateur crée son if de la manière la plus optimisée possible.
D'ailleurs un truc intéressant:
if expression then
  valeur := 1
else
  valeur := autrechose;
 
Il arrive que ce soit traduit par le compilateur en:
valeur := 1;
if not expression then
  valeur := autrechose;
 
J'ai déjà observé ce phénomène dans Delphi, pas moyen de mettre un breakpoint sur valeur := 1 suivant le if, car la ligne n'existait pas dans le programme compilé :o

gizmo me suis trompé de nom, c'est pas des string, mais des char, honte sur moi :o
LeGreg

gizmo a écrit a écrit :

 
En c++ tu peux faire des swith/case sur des string aussi.  




 
tu as un exemple de code qui compile??
 
LEGREG

Jubijub c vrai que tu peux faire une procédure de translation en string pour comparer...
THE REAL SMILEY

farib a écrit a écrit :

le probleme du case, c'est que tu ne peux comparer qu'a des constantes  




voir plus haut, ca dépend des langages

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

_gtm_ a écrit a écrit :

Ben moi je préfère des fonctions virtuelles et des classes dérivées :D  




 
Bien vu, moi aussi  ;)

Tetragrammaton IHVH Le case, c'est fait pour et en plus c'est clair.  
 
Le if imbriqué, ça allait au temps du basic...
verdoux

gizmo a écrit a écrit :

 
 
En c++ tu peux faire des swith/case sur des string aussi.  




??

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 a écrit a écrit :

oui mais bon, si je devais dire tout le bien que je pense de java, je serais grossier :D  




t'es pas sympa, perso, je commence à apprécier, ne serait-ce que pour la portabilité

gizmo oui mais bon, si je devais dire tout le bien que je pense de java, je serais grossier :D
THE REAL SMILEY

gizmo a écrit a écrit :

 
 
En c++ tu peux faire des swith/case sur des string aussi.  




Correct, par contre en Java on peut pas, et c'est bien embêtant

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

legreg a écrit a écrit :

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  




 
En c++ tu peux faire des swith/case sur des string aussi.

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 :  
 

Code :
  1. SELON CAS
  2. CAS condition 1
  3.      traitement 1
  4. CAS condition 2
  5.      traitement 2
  6. CAS condition x
  7.      traitement x
  8. CAS autre
  9.      traitement autre
  10. FINCAS
  11. et pour IF
  12. SI
  13.    ALORS
  14.        SI
  15.           ALORS
  16.           SINON
  17.        FINSI
  18.    SINON
  19.        SI
  20.           ALORS
  21.           SINON
  22.        FINSI
  23. FINSI


 
Vous préférez quelle méthode, et pourquoi ?

 

[jfdsdjhfuetppo]--Message édité par Jubijub--[/jfdsdjhfuetppo]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR