Précédent   Forum du club des développeurs et IT Pro > Java > Communauté Java > Débats

Débats Les débats et sondages sur le langage et les technologies Java

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Êtes-vous pour ou contre cette proposition ?
Pour 404 85,77%
Contre 67 14,23%
Votants: 471. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse
 
Outils de la discussion
Vieux 20/12/2007, 19h27   #41
natha
Expert Confirmé
 
Avatar de natha
 
Inscription : janvier 2006
Messages : 2 344
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : janvier 2006
Messages : 2 344
Points : 2 861
Points : 2 861
Citation:
Envoyé par kpouer Voir le message
Euh moi je le ferai pas avec un == ce switch, l'appel du equals() fait très bien l'affaire, et ainsi ca serait généralisé aux objets et non plus aux Strings.
De plus ca ne se remplace pas toujours par des enum, par exemple une entrée utilisateur qui est une String on pourrait faire
switch (val)
{
case "val1":faire un truc;break;
case "val2":faire un truc;break;
...
default : entréeinvalide;break;
}
Si on a un enum il faut déjà retrouver a quelle valeur de l'enum correspond la String
Ah bon ?

Code :
1
2
3
4
5
6
7
8
9
try {
    Enum valEnum = Enum.valueOf(val);
    switch (valEnum) {
        case valEnum1: faire un truc; break;
        case valEnum2: faire un truc; break;
    }
} catch (IllegalArgumentException e) {
    // entree invalide
}
__________________
Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
De la bonne manière de poser une question (et de répondre).
Je ne fais pas de service par MP. Merci (...de lire les règles...).
Ma page dvp.com
natha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 22h14   #42
pierreact
Candidat au titre de Membre du Club
 
Inscription : novembre 2003
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 20
Points : 14
Points : 14
Par défaut ...

Je l'utilise beaucoup en ruby (pas rails)...
C'est tres c'est tres bon CEPENDANT Il faut faire attention aux programmeurs novices qui peuvent utiliser ca n'importe comment....
Je pense que si c'est accepter, il faudra mettre des regles claires d'utilisation dans un environnement d'entreprise pour ne pas se retrouver avec un code "crado" comme certains ont dit...

Je suis assez mitige sur le point mais me laisse quand meme voter pour...
Je n'ai jamais eu de vrai probleme sur d'autres languages avec ca...
pierreact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 11h15   #43
covao
Membre du Club
 
Inscription : avril 2003
Messages : 76
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 76
Points : 63
Points : 63
Pas contre

Je n'ai pas encore utilisé la méthode hashCode de la classe String. En attendant, je pense utiliser cette méthode
covao est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 11h21   #44
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Pour.
Et je ne voies vraiment pas d'inconvénients à ça ...
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 11h59   #45
Uther
Expert Confirmé Sénior
 
Avatar de Uther
 
Homme
Inscription : avril 2002
Messages : 2 688
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2002
Messages : 2 688
Points : 5 145
Points : 5 145
Pour également la classe string est depuis le début une classe très particulière donc faire une exception de plus pour son cas ne me parait pas genant.
Uther est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 19h47   #46
yostane
Membre du Club
 
Homme yassine benabbas
Inscription : mars 2006
Messages : 82
Détails du profil
Informations personnelles :
Nom : Homme yassine benabbas
Âge : 27

Informations forums :
Inscription : mars 2006
Messages : 82
Points : 58
Points : 58
Si ça apporte en plus les optimisations du switch je suis pour
yostane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 00h46   #47
jshadocks
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 1
Points : 1
Je suis totalement pour un switch sur String, bien plus lisible qu'une série de if-else imbriqués. Le switch sur Enum de Java 5 ne permet pas de traiter tous les besoins. On peut souhaiter tester des radicaux de comptes comptables par exemple, sans que ceux-ci soient pour autant définis dans un Enum. Cela ne me parait pas crado. Quant à étendre le principe à tous les objets, je n'en mesure ni l'intérêt, ni les conséquences.
jshadocks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 10h46   #48
toomsounet
Membre éprouvé
 
Avatar de toomsounet
 
Inscription : janvier 2005
Messages : 481
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : janvier 2005
Messages : 481
Points : 494
Points : 494
Je suis pour aussi il est temps de rattrapper le Cobol sur ce point !! Pour plus de clarté dans le code.
__________________
"Most Java programs are so rife with concurrency bugs that they work only by accident"
toomsounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 12h42   #49
Patriarch24
Membre Expert
 
Avatar de Patriarch24
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 1 039
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2003
Messages : 1 039
Points : 1 535
Points : 1 535
Envoyer un message via MSN à Patriarch24
Il y a plein de points soulevés ici surper intéressants :
* les switchs d'intervalle : pourquoi pas, ça allège les suites de case sans fin...
* les switchs de String : là je suis moins pour ; je ne vois pas de cas où on ne peut les remplacer par autre chose (enum, introspection, injection de dépendances, fichier de conf, autres ?...)
* les switchs généralisés : là par contre, je suis entièrement contre. Si ça amuse certains de faire des switchs en pagaille, autant faire du C.

Donc je vote contre.
__________________
En premier lieu, utilisez un moteur de recherche.
En second lieu, postez sur le forum adéquat !
Patriarch24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 13h35   #50
ripounet
Invité régulier
 
Inscription : septembre 2004
Messages : 6
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 6
Points : 7
Points : 7
Par défaut Pour

Je serais même partisan de créer un nouveau mot-clé à cet effet, avec les particularités suivantes par rapport au switch:
- se base sur equals, valable pour tout type d'objet non primitif
- les alternatives sont mutuellement exclusives, et ou laisse tomber la nécessité du break (d'inspiration GOTO)

Note: pour ceux que ça intéresse, la structure de contrôle "cond" en Scheme est vachement mieux pensé que le switch C-like.
ripounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2007, 10h55   #51
FranT
Membre du Club
 
Inscription : mai 2002
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 130
Points : 43
Points : 43
Moi, je vote pour. C'est une fonction qui m'a toujours manquée et qui sera utile à plus d'un.
__________________
Si un jour on te reproche que ton travail n'est pas un travail de professionnel, dis-toi bien que l'Arche de Noé a été construite par des amateurs et le Titanic par des professionnels...
FranT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2007, 12h14   #52
azalsup
Membre habitué
 
Inscription : novembre 2007
Messages : 129
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 129
Points : 131
Points : 131
Cette proposition constituera une avancé pour le langage java.

Honetement avec un langage aussi dynamique pourquoi se limier aux entiers lors des structures switch

Vive la pythonisation du java
azalsup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2007, 02h12   #53
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
contre.

L'utilisation du type String dans un switch() devrait renvoyer une erreur: "Apprenez a utiliser les enums."
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 11h45   #54
hedes
Membre actif
 
Homme
Consultant informatique
Inscription : mars 2004
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 43
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mars 2004
Messages : 102
Points : 163
Points : 163
Envoyer un message via MSN à hedes
Oui, entièrement contre.
Cette discussion et le sondage sont intéressants : elle montre que beaucoup de gens préférent coder rapidement sans se soucier de la maintenance...
hedes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 13h29   #55
kenji_getpowered
Membre habitué
 
Inscription : mai 2006
Messages : 156
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mai 2006
Messages : 156
Points : 119
Points : 119
Moi je vote pour

une question :
Citation:
Cette discussion et le sondage sont intéressants : elle montre que beaucoup de gens préférent coder rapidement sans se soucier de la maintenance...
En quoi cela affecterait la maintenance?
kenji_getpowered est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 14h48   #56
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
Citation:
Envoyé par kenji_getpowered Voir le message
En quoi cela affecterait la maintenance?
Typiquement une combo-box avec { "M", "Mme", "Mlle" } et le switch() qui va avec. Si tu traduis l'IHM de ton application, tu dois également traduire le code du switch() (et ne pas te tromper en recopiant ).

Avec un Enum le problème disparait. Tu garde le meme code du switch() et tu as juste a traduire le toString() de l'Enum.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 15h03   #57
Uther
Expert Confirmé Sénior
 
Avatar de Uther
 
Homme
Inscription : avril 2002
Messages : 2 688
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2002
Messages : 2 688
Points : 5 145
Points : 5 145
Bah oui c'est un expemple de mauvaise utilisation mais bon, si tu veux interdire avec switch, la personne fera la même chose avec une série de if, ce qui tout aussi bête.

Si tu veux interdire tout ce qui peux potentielement être mal utilisé, autant interdire le Java.
Uther est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 15h06   #58
foued_scorpion
Membre à l'essai
 
Inscription : septembre 2006
Messages : 62
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 62
Points : 21
Points : 21
ça fait longtemps que j'attend cette possibilité et voilà enfin on va la trouver.
ç'était le bordel avec plusieurs "if".
foued_scorpion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 15h26   #59
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
Citation:
Envoyé par Uther Voir le message
Bah oui c'est un expemple de mauvaise utilisation mais bon, si tu veux interdire avec switch, la personne fera la même chose avec une série de if, ce qui tout aussi bête.
A l'inverse, autoriser le switch(String) revient a "valider" cette mauvaise pratique de codage: "Si ca existe c'est que c'est permis".

A mon sens un switch() s'utilise avec une liste de valeurs fixes et connues "a priori" => une liste de constante => un Enum.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 22h11   #60
natha
Expert Confirmé
 
Avatar de natha
 
Inscription : janvier 2006
Messages : 2 344
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : janvier 2006
Messages : 2 344
Points : 2 861
Points : 2 861
Citation:
Envoyé par pseudocode Voir le message
"Si ca existe c'est que c'est permis".
C'est très réducteur...
Un bon langage de programmation est obligé de permettre des choses crades pour pouvoir être qualifié de langage permissif et puissant.
Ce n'est pas parce qu'on peut faire ("toto" == str) que c'est une bonne pratique (et que ça devrais être permis).
Ce n'est pas parce qu'on peut nommer une variable ($ma_variablePourrieQuiEstNomméeComme_la_super_classe) que c'est une bonne pratique (et que ça devrais être permis).
Ce n'est pas parce qu'on peut coder une classe complète sur une seule ligne que c'est une bonne pratique.
etc.

Le switch de String est un manque à cause de certains aspects particuliers des API Java et de l'historique du langage. L'introduire comblerait un manque mais il est clair que c'est aux programmeurs de se responsabiliser un minimum.
Je trouve cet ajout bien moins problématique que les alias. Un Switch de String, même crados, restera lisible et facilement corrigeable.
__________________
Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
De la bonne manière de poser une question (et de répondre).
Je ne fais pas de service par MP. Merci (...de lire les règles...).
Ma page dvp.com
natha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h20.


 
 
 
 
Partenaires

Hébergement Web