Dans une méthode vaut il mieux exploiter le paramètre ou l'attribut ? - Java - Programmation
Marsh Posté le 03-05-2006 à 11:00:23
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
Marsh Posté le 04-05-2006 à 08:53:23
ikao2 a écrit : Hello !
|
En termes de software quality (quelle frime ! ) 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,...
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.
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 !
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,... |
c'est pour ca qu'il est generalement de bon gout de mettre les parametres de methode en final
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 |
Ah bah tiens, j'apprends un truc là !
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... :-) ) |
demande toi si le choix de java était le plus pertinent dans un cadre aussi contraint
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.
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 |
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
Marsh Posté le 04-05-2006 à 12:38:32
ReplyMarsh Posté le 04-05-2006 à 12:43:39
ReplyMarsh 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 |
en meme temps, dans l'exmple en question, ça va pas l'empeche d'ajouter des trucs dans sa map
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 |
ben non
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 :-)
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
Marsh Posté le 04-05-2006 à 14:12:01
kadreg a écrit : Je propose un débat philosophique avec guinness et jeu de flechettes |
Saint Michel 20h ?
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 :
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)