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?
Répondre
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.
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
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. –
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
Supprimez FinalParameters de votre déclaration CheckStyle. http://checkstyle.sourceforge.net/config_misc.html#FinalParameters
- 1. Les paramètres de sortie doivent-ils être définis même si la fonction COM échoue?
- 2. Pourquoi les tables doivent-elles être réparées?
- 3. Pourquoi les objets WizardStep doivent-ils être représentés par ...?
- 4. Pourquoi les fichiers doivent être montés sous Linux?
- 5. Les paramètres de méthode peuvent-ils être dynamiques dans C#
- 6. Pourquoi les fichiers doivent-ils être "préparés" lors de la recherche de références dans VS2005
- 7. Les noms Var JSTL peuvent-ils être définis à partir d'expressions ou doivent-ils être des chaînes littérales?
- 8. Les propriétés doivent-elles être désaffectées?
- 9. Magento ignore les paramètres d'URL supplémentaires définis
- 10. Pourquoi ces paramètres par défaut sont-ils définis tels quels?
- 11. Les noms de paramètres de formulaire doivent-ils être codés lors d'un POST?
- 12. Les événements personnalisés doivent-ils être définis sur null lors de la mise au rebut d'un objet?
- 13. Les paramètres des SP de SqlDataSources doivent-ils être ordonnés de manière identique?
- 14. Les paramètres d'injection de dépendance sont-ils définis pour les paramètres utilisateur?
- 15. .Net SvcUtil: les attributs doivent être facultatifs
- 16. Les ensembles d'interopérabilité doivent-ils être signés?
- 17. Les nombres doivent-ils être localisés?
- 18. Les données jQuery doivent-elles être chaînables?
- 19. Quand et pourquoi un EventHandler requiert-il que les objets soient définitifs?
- 20. Si plusieurs blocs Try/Catch d'une méthode doivent être combinés
- 21. quels caractères doivent être échappés dans les paramètres de chaîne sql
- 22. Pourquoi les propriétés de dépendance .Net WPF doivent-elles être des membres statiques de la classe
- 23. Pourquoi les fonctions nommées doivent-elles être dans un fichier séparé dans les calins?
- 24. champs transitoires définitifs et sérialisation
- 25. Quand les classes abstraites doivent-elles être utilisées?
- 26. Les chaînes de nettoyage doivent être des valeurs JSON valides
- 27. Pourquoi les vues SQL Server doivent-elles être rafraîchies de temps à autre?
- 28. Espace de noms Clojure: méthode pour voir les objets définis?
- 29. Les méthodes surchargées avec des types de valeur doivent-elles être consolidées dans une méthode générique?
- 30. Les instructions préparées pour PHP PDO doivent-elles être échappées?
De petits détails comme la langue et la plate-forme que vous utilisez seraient pratiques. – Oded
Java est ma langue. – Jothi
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