Bonjour,
J'aimerais savoir l'intérêt de commencer la nommencalture d'une variable par un underscore "_".
Mercio
Bonjour,
J'aimerais savoir l'intérêt de commencer la nommencalture d'une variable par un underscore "_".
Mercio
Le fait de commencer une variable par '_' reste utilie seulement quand c'est une variable d'instance, sa evite l'utilisation du pointeurthis
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 !
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.
Oui mais dans ce cas les noms des paramètres doivent être différents des noms des attributs.Envoyé par root76
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...![]()
pourquoi ca donnerait une salle tête aux getters et setters ?
Ca empêche pas de les faire sans le préfixe.
diabolo a voulu dire qu'on va avoire du code comme:Envoyé par root76
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){ _num=num; }
on fait c'est ce que j'ai compris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public maclasse( int num){ this.num=num; }
on tous cas je pense que moi aussi j'ai pas bien compris![]()
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.
Je pense pas car le code suivant donne comme résultat: 8Envoyé par freakfm
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); } }
Ca donnerait une sale tête aux getters et setters car ils auraient cette forme:Envoyé par hugo123
En général, les noms de méthode n'ont pas d'"_".
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){...}
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:Envoyé par hugo123
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private Object maVariable; public Object getMaVariable(){...} public void setMaVariable(Object value){...}
Il veut dire que tu peux définir des getter/setter en respectant les conventions même si la propriété comporte un underscore :Envoyé par Fifan31
Les noms des méthodes getter/setter ne doivent pas forcément correspondre à un attribut, et ceci ne pose donc aucun problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Bean { private String _value; public String getValue() { return _value; } public void setValue(String value) { _value = value; } }
Par contre on perd alors la génération automatique des getter/setter par l'EDI...![]()
Heu... Je ne comprend pas le rapport entre le sujet original et ton codeEnvoyé par root76
a++
Pour apporter un peu d'eau au moulin, j'utilise moi le '_' pour mes attributs de classes importants (ils sont regroupés en début de classe, les autres sont groupés autour des méthodes qui les utilisent mais n'ont souvent pas d'importance pour le reste de la classe).
Ca me permet de coder un peu plus rapidement sous eclipse car il me suffit de tapper le nom de mon objet puis le '.' et enfin le '_' pour avoir alors la liste des attributs de ma classe filtrées (liste qui apparaît automatiquement sous Eclipse).
Et aussi ça me permet d'indiquer quels attributs sont vraiment utiles à ma classe (i.e. représentent une caractéristique de ma classe et non une caractéristique d'un traitement de ma classe).
Je sais pas si c'est clair![]()
Après c'est sûr, les getters/setters sont moins jolis.
C'était pour un contre exemple pour ce qui était dit du fait qu'on ne peut affecter une valkeur à une variable d'instance qu'en mettant le poiteur "this" deavnt la variable, o dans mon exemple cela est possible sans avoir recour à ce pointeurEnvoyé par adiGuba
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.Envoyé par root76
Il faut obligatoirement mettre this seulement lorsqu'on a un paramètre du même nom afin de corriger le conflit de nom...Envoyé par root76
Sinon le this reste optionnel (et implicite)
a++
Ok, j'ai bien compris maintenant, merci.Envoyé par adiGuba
Un petit tag? Au passage, moi aussi je trouve le _ super crade ...
Quitte à ne pas respecter la convention java, je prefere a tout prendre, faire l'inverse
Je profite du sujet pour poser une question : existe il pour eclipse des verifieurs de code : je respecte pour ma part scrupuleusement les conventions java, je classe mes methodes par ordre alphabetique ... mais je collabore avec des personnes pour qui cela n'a malheuresement pas d'importance. Un tel outil permettrait en gros de fixer les regles de jeu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class MaClasse { String nom; public MaClasse(String _Nom) { nom = _Nom; } }![]()
pour la gestion des regles de nommage sous eclipse il y pmd et checkstyleEnvoyé par leyee
merci je vais aller jeter un oeil
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager