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

Langage Java Discussion :

Optimisation de code


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut Optimisation de code
    Bonjour,

    Je suis confronter à du code assez "nébuleux" et j'aimerai pouvoir l'éclaircir, j'a déjà quelques idées mais j'aimerai votre avis.

    Voici donc comment se présente le code, il y une suite de if{} else{} renfermant les mêmes appels et presque le même code si ce n'est quelques initialisations différentes et quelques paramètres différents, la seule chose importante qui diffère dans chacun des if est un test définissant le type d'objet en entrée.

    Mon souhait serait de supprimer les IF et de le remplacer par une interface qui serait implémentée dans chacunes des classes. En tenant compte que dans ma classe appelante je n'aurais qu'une ligne qui appelerait une méthode dans l'interface et qui serait automatiquement dirigée vers la bonne classe.

    Qu'en pensez-vous ? Avez-vous des idées, suggestions, remarques ?

    Merci d'avance pour votre aide.
    Stujava

  2. #2
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Met ton code

  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Comme ca, j'ai envie de dire : "oui, pourquoi pas".

    Après je pense que le code en question serait surement utile afin d'y voir plus clair, et pourquoi pas ta proposition de changement. Car suivant les appels et autre, cela peut être intéressant ou non...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Désoé mais je ne peux mettre mon code sur le forum.

  5. #5
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Pourquoi, tu travailles pour les Services Secrets ?

    un extrait devrait suffire

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Non je n'ai pas cette chance de travailler pour les services secret mais je suis sur mon machine perso et pas sur la machine où se trouve le code et impossible de transférer le code d'une machine à l'autre

  7. #7
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    C'est malheureux...

    Je ne vois donc pas comment nous pourrions te donner notre opinion sans savoir vraiment de quoi il s'agit...

    Sache qu'on ne souhaite pas tout ton projet, juste ton enchainement de boucle, quitte à en changer le nom des variables et méthodes si cela te convient mieux... mais sans support, on ne pourra pas apporter de vrais reflexion, juste des suppositions... ce qui ne te fera pas avancer.
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Je comprends pas de souci.

  9. #9
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    si je comprends bien tu cherches à faire un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    interface Faiseur {
            Truc faisLeAvec(Machin machin) ;
    }
    tes différents objets implantent cette interface et après tu veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       for(Faiseur acteur : lesDifférentsActeurs){
                listeRes.add(acteur.faisLeAvec(ça)) ;
       }
    ça me semble une bonne idée pour remplacer des if(typeObjet)... c'est quoi ta question?
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  10. #10
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    À noter que ça ne sera pas une "optimisation" au sens performances ; par contre, ça peut fortement améliorer la lisibilité et la facilité de maintenance du code.

    En particulier, si comme tu le dis il y a des morceaux de code commun, n'hésite pas à le factoriser.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Rei: ben on peu chipoter, si on passe de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    if (x instanceof TypeA){
      TypeA a = (TypeA) x;
      a.machin();
      a.bidule();
      a.truc();
    } else if (x instanceof TypeB){
      TypeB a = (TypeB) x;
      b.machin();
      b.bidule();
      b.truc();
    }.....
    } else if (x instanceof TypeZ){
      TypeZ z = (TypeZ) x;
      z.machin();
      z.bidule();
      z.truc();
    }.....
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface Generik {.....}
    Generik g = (Generik) x;
    g.machin();
    g.bidule();
    g.truc();
    on va economiser quelques tests dans le cas Z

  12. #12
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Effectivement, vu comme ça (je viens de relire le post initial que j'avais lu en diago), ça gagne epsilon ^^

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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