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 :

underscore devant le nom d'une variable


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Par défaut underscore devant le nom d'une variable
    Bonjour,


    J'aimerais savoir l'intérêt de commencer la nommencalture d'une variable par un underscore "_".

    Mercio

  2. #2
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    Le fait de commencer une variable par '_' reste utilie seulement quand c'est une variable d'instance, sa evite l'utilisation du pointeur
    this

  3. #3
    Membre éclairé
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Par défaut
    j'ai un doute d'avoir bien compris, car on peut initialiser une variable d'instance dans un constructeur par exemple sans la préceder par le pointeur this !

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Salut,

    historiquement, le "_" précède les noms des variables d'instance d'une classe.
    C'est une règle de codage "héritée" du C++ (peut être même du C).
    Personnellement je ne l'apprécie pas d'autant que sauf erreur de ma part, cette règle n'est pas mentionnée dans les règles de codage java de Sun.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Par défaut
    Citation Envoyé par root76
    j'ai un doute d'avoir bien compris, car on peut initialiser une variable d'instance dans un constructeur par exemple sans la préceder par le pointeur this !
    Oui mais dans ce cas les noms des paramètres doivent être différents des noms des attributs.
    Perso j'utilise le this. J'ai aussi pas mal vu de paramètres nommés "newNomAttribut".
    Les préfixes '_' ça doit donner une sale tête aux getters et aux setters...

  6. #6
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    pourquoi ca donnerait une salle tête aux getters et setters ?
    Ca empêche pas de les faire sans le préfixe.

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Citation Envoyé par hugo123
    pourquoi ca donnerait une salle tête aux getters et setters ?
    Ca donnerait une sale tête aux getters et setters car ils auraient cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private Object _maVariable;
    public Object get_maVariable(){...}
    public void set_maVariable(Object value){...}
    En général, les noms de méthode n'ont pas d'"_".

    Citation Envoyé par hugo123
    Ca empêche pas de les faire sans le préfixe.
    Dans ce cas là, tu ne respecte plus la norme JavaBean qui veut que les accesseurs et mutateurs commencent par get ou set suivit du nom de la variable en mettant la première lettre en majuscule. Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private Object maVariable;
    public Object getMaVariable(){...}
    public void setMaVariable(Object value){...}

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Par défaut
    Citation Envoyé par root76
    j'ai un doute d'avoir bien compris, car on peut initialiser une variable d'instance dans un constructeur par exemple sans la préceder par le pointeur this !
    diabolo a voulu dire qu'on va avoire du code comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public maclasse( int num){
    _num=num;
    }
    au lieu de(quand ton attribu est nomé "num" et pas "_num"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public maclasse( int num){
    this.num=num;
    }
    on fait c'est ce que j'ai compris
    on tous cas je pense que moi aussi j'ai pas bien compris

  9. #9
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Le "_" est tout simplement une convention d'écriture, elle n'apporte rien à l'efficacité du code. Perso je trouve ça dégueulasse aussi, j'utilise le this.

  10. #10
    Membre expérimenté Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Par défaut
    Citation Envoyé par Rayndell
    Le "_" est tout simplement une convention d'écriture, elle n'apporte rien à l'efficacité du code. Perso je trouve ça dégueulasse aussi, j'utilise le this.
    Certe une convention, mais soit dit en passant, la code convention de Java dit ceci :
    Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed.

  11. #11
    Membre éclairé
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Par défaut
    Citation Envoyé par freakfm
    diabolo a voulu dire qu'on va avoire du code comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public maclasse( int num){
    _num=num;
    }
    au lieu de(quand ton attribu est nomé "num" et pas "_num"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public maclasse( int num){
    this.num=num;
    }
    on fait c'est ce que j'ai compris
    on tous cas je pense que moi aussi j'ai pas bien compris
    Je pense pas car le code suivant donne comme résultat: 8

    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
    public class test {
     
     
    	private int variable;
     
     
    	public test(){
    		variable=8;
    	}
     
     
    	public static void main(String[] args){
    	       test t6 = new test();
    	       System.out.println(t6.variable);
    	}
    }

  12. #12
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Citation Envoyé par root76
    Je pense pas car le code suivant donne comme résultat: 8

    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
    public class test {
     
     
    	private int variable;
     
     
    	public test(){
    		variable=8;
    	}
     
     
    	public static void main(String[] args){
    	       test t6 = new test();
    	       System.out.println(t6.variable);
    	}
    }
    C'est normal que ça te donne 8 non ? Je vois pas le rapport. Le fait de mettre un underscore ou non devant un attribut n'a aucune incidence sur le code, c'est juste une convention d'écriture. Si tu avait appaelé ton attribut _variable, ça aurait donné le même résultat. Et de plus, personne n'a dit qu'on est obligé d'affecter un attribut avec le pointeur this, c'est juste au cas où une variable du même nom est utilisée dans la méthode.

Discussions similaires

  1. Module dont le nom est une variable
    Par Mr Hyde dans le forum Général Python
    Réponses: 11
    Dernier message: 26/02/2023, 20h39
  2. Réponses: 7
    Dernier message: 26/08/2011, 06h25
  3. Réponses: 37
    Dernier message: 02/03/2006, 01h58
  4. Incrémenter le NOM d'une variable
    Par Mors_Ubyte dans le forum Access
    Réponses: 1
    Dernier message: 03/01/2006, 18h47
  5. [Reflection] Connaître le nom d'une variable ...
    Par dahwoud dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/08/2005, 14h37

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