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 :

Refactoriser du code existant


Sujet :

Java

  1. #1
    SrK
    SrK est déconnecté
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Points : 83
    Points
    83
    Par défaut Refactoriser du code existant
    Salut,

    Je voulais factoriser du code existant.

    Comment procéderiez vous ?

    J'avais quasi le même traitement exécuté à deux trois choses près.

    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
    19
    public class One {
      private A a = new A();
      private B b = new B();
    }
     
    public class Two {
      private A a = new A();
      private Bdetailed b = new Bdetailed();
      private String other;
    }
     
    public class B {
      private final Custom custom = new Custom();
    }
     
    public class Bdetailed {
      private final Custom custom = new Custom();
      private final Custom custom2 = new Custom();
    }
    Je voulais donc faire de l'héritage avec Bdetailed qui hériterai B pour éviter de dupliquer du code.
    Puis faire de l'héritage de Two qui hériterai de One.

    Le truc c'est que je ne sais pas vraiment quoi faire des attributs des classes parentes ? je mets protected ou je mets un accesseur ? ( pour les attributs de B et Bdetailed )

    Pour one et two, vu que A et B seront communes, je peux avoir la base dans la classe One, et juste rajouter mon attribut de type String dans B ?

    Merci
    La différence entre la théorie et la pratique, c'est qu'en théorie, il n'y a pas de différence, mais qu'en pratique, il y en a une.

  2. #2
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Un truc comme ça ?

    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
    19
    public class One {
      protected A a = new A();
      protected B b = new B();
    }
     
    public class Two extends One{
      private String other;
      public Two(){
        b = new Bdetailed();
      }
    }
     
    public class B {
      protected final Custom custom = new Custom();
    }
     
    public class Bdetailed extends B{
      private final Custom custom2 = new Custom();
    }
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  3. #3
    SrK
    SrK est déconnecté
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Points : 83
    Points
    83
    Par défaut
    Oui, c'est exactement ca, merci.

    J'hésite entre ca et mettre des accesseurs pour accéder aux champ "protected" qui serait alors privé ?
    La différence entre la théorie et la pratique, c'est qu'en théorie, il n'y a pas de différence, mais qu'en pratique, il y en a une.

  4. #4
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Ca dépend du degré de couplage désiré.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  5. #5
    SrK
    SrK est déconnecté
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Points : 83
    Points
    83
    Par défaut
    En gros, si je veux donner tous les droits à la classe fille je mets l'attribut en protected, sinon je gère les accesseurs entre private/protected en fonction des besoins ?
    La différence entre la théorie et la pratique, c'est qu'en théorie, il n'y a pas de différence, mais qu'en pratique, il y en a une.

  6. #6
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Lis ça :

    http://codemonkeyism.com/generation-...ramming-style/

    En gros, c'est tellement facile (avec Refactor dans Eclipse, par exemple) d'ajouter des accesseurs si un jour tu en as besoin, que ça ne vaut plus trop la peine de le faire systématiquement.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  7. #7
    SrK
    SrK est déconnecté
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Points : 83
    Points
    83
    Par défaut
    Ok ca marche.

    Par contre, le fait de ne pas spécifier le type hérité dans la classe B, ca force à caster à chaque appel.
    La différence entre la théorie et la pratique, c'est qu'en théorie, il n'y a pas de différence, mais qu'en pratique, il y en a une.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire un projet avec un code existant
    Par mm2405 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/11/2008, 11h38
  2. Code existant flêche + noms = planning
    Par Bayard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/10/2008, 14h23
  3. VS2008: créer project web application à partir de code existant
    Par julien.63 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 01/10/2008, 13h52
  4. comprehension d'un code existant
    Par CyberSlan dans le forum Langage
    Réponses: 7
    Dernier message: 04/07/2008, 21h13
  5. Réponses: 4
    Dernier message: 24/04/2006, 14h07

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