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 :

Le meilleur entre deux constructeurs


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Par défaut Le meilleur entre deux constructeurs
    Bonjour à tous et à toutes

    je vous donne deux constructeurs qui réalisent la même tâche :

    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
    20
    21
    22
    23
    24
    25
    26
    class Cercle{
      private int rayon;
      private int centre_x;
      private int centre_y;
     
      Cercle(int a, int b, int c)
      {
        rayon = a;
        centre_x = b;
        centre_y = c;
      }
     
      // Voici le premier
      Cercle()
      {
        rayon = 1;
        centre_x = 0;
        cetre_y = 0;
      }
     
      /* et voici de deuxième
      Cercle()
      {
        this(1, 0, 0);
      }
      */
    ma question : quel est le "meilleur".. je veux dire en termes de complexités, car à mon avis le premier fait des simples affectations, tandis que le deuxième réalise un appel procédural. Non ?

    Merci d'avance..

  2. #2
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    J'aurais tendance à utiliser le 2ème qui permet d'économiser des lignes de codes. Là tu as 3 lignes dans ton constructeur, mais imagine un constructeur de 30 lignes.

  3. #3
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    Citation Envoyé par muad'dib Voir le message
    J'aurais tendance à utiliser le 2ème qui permet d'économiser des lignes de codes. Là tu as 3 lignes dans ton constructeur, mais imagine un constructeur de 30 lignes.
    d'accord avec toi sur le principe mais c'est vrai que le premier est plus facile a lire...
    plus compréhensible donc si tu n'a pas de constructeur tros "gros" la premiere permet peut etre une lecture plus simple du programme (par une personne autre que le programmeur par exemple)

    mais bon ce n'est qu'un avis parmi d'autre

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Salut

    Me concerant :
    - Concernant la complexité, je ne me préocupe jamais de savoir si une affectation est plus performante qu'un appel de procédure. Ce n'est pas pertinant de visé a "optimisé" cela. Pour moi, les seuls points critiques a optimiser sont les appels aux base de données, aux ressources distantes, à l'écriture sur le disque etc. Le reste n'apporte pas suffisament de gain (voir pas du tout)

    - en ce qui concerne la lisiblité du code et même la réutilisation de code :
    Si demain tu décide que ton constructeur primaire [Cercle(int,int,int)] doit en plus d'initialiser les coordonnées, effectuer d'autres opérations, ton constructeur 1 ne les prendra pas en compte, sauf si tu les recode dedans.
    Le constructeur 2 est donc bien meilleur, car il ne recode pas le constructeur primaire.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par metalpetsFR Voir le message
    - Concernant la complexité, je ne me préocupe jamais de savoir si une affectation est plus performante qu'un appel de procédure. Ce n'est pas pertinant de visé a "optimisé" cela. Pour moi, les seuls points critiques a optimiser sont les appels aux base de données, aux ressources distantes, à l'écriture sur le disque etc. Le reste n'apporte pas suffisament de gain (voir pas du tout)
    +1

    Surtout qu'il y a de forte chance que le compilateur optimise ce genre d'appel...

    Pour moi la seconde solution est bien plus propre car elle évite toute duplication de code... et c'est d'autant plus vrai lorsqu'il y a un très grand nombre de constructeur différents...

    a++

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    +1

    Surtout qu'il y a de forte chance que le compilateur optimise ce genre d'appel...

    Pour moi la seconde solution est bien plus propre car elle évite toute duplication de code... et c'est d'autant plus vrai lorsqu'il y a un très grand nombre de constructeur différents...

    a++
    +1

    Cette construction est d'ailleurs tres largement utilisé dans ce que j'ai pu voir.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/12/2011, 17h34
  2. [.NET VC++] ou exclusif entre deux String
    Par benoitB dans le forum MFC
    Réponses: 7
    Dernier message: 25/11/2003, 11h20
  3. Temps de réponse entre deux sites
    Par coup dur dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 16/10/2003, 15h26
  4. Connexion entre deux ordi [Débutant]
    Par Ryadus dans le forum Développement
    Réponses: 2
    Dernier message: 12/06/2003, 21h47
  5. Réponses: 5
    Dernier message: 25/03/2003, 19h43

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