Dans une méthode vaut il mieux exploiter le paramètre ou l'attribut ?

Dans une méthode vaut il mieux exploiter le paramètre ou l'attribut ? - Java - Programmation

Marsh Posté le 03-05-2006 à 10:43:52    

Hello !
 
Une question simple et peut être pas d'un intérêt suprême mais bon :-)
 
regardons la méthode suivante :
 

Code :
  1. HashMap aMap;
  2. public UneMethode(HashMap pMap) {
  3.  aMap = pMap;
  4.  // Vaut il mieux faire
  5.  pMap.get("bidule" );
  6.  //ou
  7.  aMap.get("bidule" );
  8. }


 
Donc vaut il mieux (en terme d'efficacité) utiliser son paramètre qui, je dis ca sans savoir, serait peut être plus "accessible", ou l'attribut, ou c'est kif kif :-) ??
 
Merci !
 
(et a bientôt pour d'autres questions de ce type)

Reply

Marsh Posté le 03-05-2006 à 10:43:52   

Reply

Marsh Posté le 03-05-2006 à 11:00:23    

[:roane]
 
En terme de perf j'en sais rien; bien que sans etre expert je puisse te dire que c'est "kif kif". Demandes toi plutot quelles sont les différences de concept entre un membre de classe et un paramètre de fonction :o

Reply

Marsh Posté le 04-05-2006 à 08:53:23    

ikao2 a écrit :

Hello !
 
Une question simple et peut être pas d'un intérêt suprême mais bon :-)
 
regardons la méthode suivante :
 

Code :
  1. HashMap aMap;
  2. public UneMethode(HashMap pMap) {
  3.  aMap = pMap;
  4.  // Vaut il mieux faire
  5.  pMap.get("bidule" );
  6.  //ou
  7.  aMap.get("bidule" );
  8. }


 
Donc vaut il mieux (en terme d'efficacité) utiliser son paramètre qui, je dis ca sans savoir, serait peut être plus "accessible", ou l'attribut, ou c'est kif kif :-) ??
 
Merci !
 
(et a bientôt pour d'autres questions de ce type)


 
En termes de software quality  (quelle frime !  :sol:) on préfère généralement toucher le moins possible aux paramètres des méthodes (voire pas du tout sauf pour les recopier dans une variable locale). Les paramètres d'une méthode sont un peu considérés comme des "intouchables" : n'importe où dans ta méthode tu peux avoir besoin d'utiliser la valeur d'origine d'un paramètre, alors si tu modifies cette valeur,...   :sweat:
 
Mais bon, dans ton exemple c'est un peu kif kif car pMap et aMap sont des références sur le même objet, donc modifier l'un revient à modifier l'autre... Reste que, pour plus de lisibilité, c'est mieux de ne pas trop toucher aux paramètres d'une méthode.

Reply

Marsh Posté le 04-05-2006 à 10:51:19    

okay okay, si il n'y a vraiment aucune différence en term de perfs... (j'aurai à lancer ce style de méthode un grand nombre de fois sur un machine pas trés costaude, donc si j'avais pu grapiller quelques centièmes à chaque fois... :-) )
 
Merci !

Reply

Marsh Posté le 04-05-2006 à 11:17:13    

post_it a écrit :

n'importe où dans ta méthode tu peux avoir besoin d'utiliser la valeur d'origine d'un paramètre, alors si tu modifies cette valeur,...   :sweat:


 
c'est pour ca qu'il est generalement de bon gout de mettre les parametres de methode  en final [:dawao]

Reply

Marsh Posté le 04-05-2006 à 11:37:44    

souk a écrit :

c'est pour ca qu'il est generalement de bon gout de mettre les parametres de methode  en final [:dawao]


Ah bah tiens, j'apprends un truc là !  :jap:

Reply

Marsh Posté le 04-05-2006 à 11:40:04    

+1

Reply

Marsh Posté le 04-05-2006 à 11:40:17    

ikao2 a écrit :

okay okay, si il n'y a vraiment aucune différence en term de perfs... (j'aurai à lancer ce style de méthode un grand nombre de fois sur un machine pas trés costaude, donc si j'avais pu grapiller quelques centièmes à chaque fois... :-) )
 
Merci !


 
demande toi si le choix de java était le plus pertinent dans un cadre aussi contraint :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-05-2006 à 11:42:51    

Pour les types primitifs niveau perf, c'est indéniablement l'attribut qui gagne puisqu'en java le passage des params se fait par copie.


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Marsh Posté le 04-05-2006 à 12:07:59    

souk a écrit :

c'est pour ca qu'il est generalement de bon gout de mettre les parametres de methode  en final [:dawao]


Ca a pas beaucoup d'intérêt par rapport au "const" du C++.
D'ailleurs pas mal milite pour l'intégration d'un "const" dans Java.
 
Mais apparemment ça a été refusé définitivement:
http://bugs.sun.com/bugdatabase/vi [...] id=4211070

Message cité 1 fois
Message édité par verdoux le 04-05-2006 à 12:12:28
Reply

Marsh Posté le 04-05-2006 à 12:07:59   

Reply

Marsh Posté le 04-05-2006 à 12:38:32    

verdoux a écrit :

Ca a pas beaucoup d'intérêt par rapport au "const" du C++.


 
et ? [:pingouino]

Reply

Marsh Posté le 04-05-2006 à 12:43:39    

Il est franchement inutile de mettre final pour les paramètres d'une méthode :o

Reply

Marsh Posté le 04-05-2006 à 13:11:23    

souk a écrit :

c'est pour ca qu'il est generalement de bon gout de mettre les parametres de methode  en final [:dawao]


en meme temps, dans l'exmple en question, ça va pas l'empeche d'ajouter des trucs dans sa map [:dawa]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-05-2006 à 13:12:05    

verdoux a écrit :

Il est franchement inutile de mettre final pour les paramètres d'une méthode :o


ben non [:pingouino]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-05-2006 à 13:59:11    

Bon moi j'ai eu ma réponse, mais si vous pouviez vous mettre d'accord sur cette histoire de final, ce serait cool :-)

Reply

Marsh Posté le 04-05-2006 à 14:07:59    

ikao2 a écrit :

Bon moi j'ai eu ma réponse, mais si vous pouviez vous mettre d'accord sur cette histoire de final, ce serait cool :-)


 
Je propose un débat philosophique avec guinness et jeu de flechettes :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-05-2006 à 14:12:01    

kadreg a écrit :

Je propose un débat philosophique avec guinness et jeu de flechettes :o


Saint Michel 20h ? [:pingouino]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed