2010-09-03 17 views
3

J'ai activé Checkstyle pour mon projet. Il montre une marque jaune sur les paramètres de la méthode et demande de la définir comme final. Pourquoi? Quel est le but? Si non spécifié, quel sera le problème?Pourquoi les paramètres de méthode doivent être définis comme définitifs?

+1

De petits détails comme la langue et la plate-forme que vous utilisez seraient pratiques. – Oded

+0

Java est ma langue. – Jothi

+0

Des outils comme Checkstyle doivent être considérés comme des suggestions ou des points de départ pour construire ce que votre équipe considère comme une bonne forme. J'ai vu des équipes perdre beaucoup de temps à répondre à tous les défauts perçus à partir d'outils d'analyse statique sans y mettre de réelle pensée humaine. Cela étant dit @Balazs a une bonne réponse pour la partie générale "pourquoi vous devriez faire cela" de la question. – cjstehno

Répondre

2

Dans le cas où il y a une règle dans Checkstyle, normalement, la réponse est là aussi: http://checkstyle.sourceforge.net/config_misc.html

Dans ce cas:

Modification de la valeur des paramètres lors de l'exécution de l'algorithme de la méthode peut être déroutant et devrait être évité. Une excellente façon de laisser le compilateur Java empêcher ce style de codage est de déclarer les paramètres définitifs.

+0

Lors de la finalisation de la méthode de marquage, les paramètres ne sont-ils pas copiés sur l'objet à des fins de sérialisation? – Behnil

+1

Les paramètres de méthode sont similaires aux variables locales. Ils n'ont rien à voir avec la sérialisation des objets. Ou j'ai mal compris votre question. –

+0

Oui, mais si vous souhaitez utiliser une variable locale dans une classe anonyme définie dans la méthode, vous devez la marquer comme définitive. Ceci copie la variable dans l'objet (pour être accessible à partir de la classe anonyme) et comme effet secondaire, il est séralisé avec l'objet. – Behnil