IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Importance de déclarer une méthode, une classe, un attribut final


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut Importance de déclarer une méthode, une classe, un attribut final
    Bonjour,
    J'utilise checkstyle et il me soulève plusieurs warnings pour déclarer qu'une méthode doit être finale, je me retrouve avec des milliers d'erreur.
    Je me demande si c'est intéressant d'activer checkstyle si on oublie de mettre final aux méthodes qu'on ne redéfinit pas, et quelles sont les points positifs et négatifs à déclarer une méthode ou un attribut finale(coté performances par exemple).
    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Pour la performance je te suggère cette lecture:
    http://www.javaperformancetuning.com/tips/final.shtml

    Sinon la principale utilité est pour la relecture du code : on indique clairement que tel attribut ou paramètre de méthode ne va pas changer. C'est particulièrement intéressant pour les objets en paramètre de méthode, que ce soit pour indiquer cela, ou alors autre utilité pour forcer l'implémentation à ne pas modifier le paramètre.

    Pour les méthodes, cela sert à interdire les redéfinitions.

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    A mon avis t'as configuré ton checkstyle pour être très très spépieux

    Personellement, je n'ai jamais définis de paramètre finaux. Pour les champs, ça dépend de l'usage. Coté performances, je n'ai jamais rémarqué de différence. Pour ce qui est des méthodes, c'est en théorie plus performant de mettre final, mais en pratique c'est surtout très génant. Ce n'est pas parceque, aujourd'hui, tu ne surcharge pas cette méthode que demain tu n'en aura pas besoin.

  4. #4
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Ce n'est pas parceque, aujourd'hui, tu ne surcharge pas cette méthode que demain tu n'en aura pas besoin.
    Oui, donc en fait tu met "final" pour que le compilo te sorte une erreur quand tu la surcharge. Pas mal de ces trucs de style sont là pour ça, pour que le compilo balance un faux positif plutot que de prendre le risque d'avoir une run-time, ou qu'un (autre ?) stagiaire change un truc, plus tard.

    Du coup beaucoup rigidifient tout, un peu comme pour les GUI, où certains ont tendance à y aller en coordonnées absolues, histoire de tout contrôler.

    En pratique, tu configures CheckStyle pour qu'il ne beepe pas toutes les cinq minutes, autrement dit, pour qu'il te signale ce qui risque d'être une erreur parce que tu ne fais pas comme tu trouvais normal de faire quand tu as configuré CheckStyle, je ne sais pas si je me fais bien comprendre.

    C'est comme les erreurs dans Eclipse : tu peux décider qu'un truc est un fatal, un warning ou un ignore selon ta manière de faire.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Citation Envoyé par JoeChip Voir le message
    En pratique, tu configures CheckStyle pour qu'il ne beepe pas toutes les cinq minutes, autrement dit, pour qu'il te signale ce qui risque d'être une erreur parce que tu ne fais pas comme tu trouvais normal de faire quand tu as configuré CheckStyle, je ne sais pas si je me fais bien comprendre.
    A la deuxième relecture si

    C'est clair que c'est pas pour les perfs qu'il faut le mettre. Mais je trouve que pour la compréhension lors d'une relecture/maintenance de code ça a une réelle utilité.
    De même pour le codeur lorsqu'il veut vraiment signaler qu'un objet ne doit pas être modifié!

Discussions similaires

  1. Accéder aux constantes à déclarer pour une méthode de classe
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 18/06/2009, 14h16
  2. Réponses: 5
    Dernier message: 15/05/2007, 20h51
  3. Réponses: 3
    Dernier message: 02/01/2007, 13h53
  4. Réponses: 4
    Dernier message: 29/01/2006, 17h54
  5. [C#] Ajout d'une méthode à la classe DropDownList
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo