IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Refactoring d'une suite de if


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Novembre 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 76
    Par défaut Refactoring d'une suite de if
    Bonjour,

    Je cherche à rendre mon code le plus "joli" possible, en utilisant notemment le polymorphisme. Après différentes étapes, j'obtiens le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    MonRetour ceQueJeVeux;
    if (maCondition1(monParam)) {
        ceQueJeVeux = monTraitementCas1(monParamDeFonction);
    } else if (maCondition2(monParam)) {
        ceQueJeVeux = monTraitementCas2(monParamDeFonction);
    } else if (maCondition3(monParam)) {
       ceQueJeVeux = monTraitementCas3(monParamDeFonction);
    } else {
       ceQueJeVeux = maFonctionParDefaut(monParamDeFonction);
    }
    return ceQueJeVeux;
    Est il possible de simplifier en utilisant une interface, et un GoF builder ou factory ? Je ne suis pas expert en deseign pattern. Comment le mettre en place concrètement?
    Connaissez-vous une liste de diffusion dédiée aux problèmes de "beaux" codes?

    Merci d'avance !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Bonjour, si ce ne sont que 4 ifs, ça passe encore. Ce code est pas mal.

    Si tu en as davantage, je te conseille d'opter pour une interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface MonInterface {
      public boolean condition (Object monParamDeTest);
     
      public MonRetour executer (Object monParamDeFonction);
    }
    Et d'ensuite avoir une liste d'implémentation de ces interfaces, et de la parcourir afin de faire le test et d'exécuter son code si cette implémentation est apte à le faire.

    Si tu dois gérer bien plus de tests que ceux-ci, envisage peut-être une chaîne de responsabilité. Ce patron permet de passer un objet à un premier composant de la chaine. S'il accepte d'exécuter son code, il le fera et renverra son retour. Sinon, il demandera au suivant dans la chaîne de faire son propre test et donner son retour, et ainsi de suite. Le dernier dans la chaîne est bien sûr le comportement par défaut.

    En fait, ces deux comportements sont similaires, mais c'est une question de goût.

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/02/2006, 09h44
  2. Réponses: 1
    Dernier message: 22/02/2006, 09h02
  3. Réponses: 2
    Dernier message: 07/02/2006, 19h44
  4. Réponses: 8
    Dernier message: 02/12/2005, 18h07
  5. [Recursivite] function/procedure d'une suite logique
    Par Tata dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 02/03/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo