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

Langages de programmation Discussion :

Question POO, états globaux


Sujet :

Langages de programmation

  1. #1
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut Question POO, états globaux
    Salut,

    J'ai une question, ou plutôt j'ai un avis mais j'aimerais le conforter par d'autres avis, car j'ai vu ça nulle part.
    Ca serait pour un projet PHP, mais ça s'applique en fait à tous les langages objet.

    De part mon expérience, je suis au courant des problématiques liées aux variables globales : il y a des cas où l'application ou des morceaux de l'application ne sont pas utilisés dans le contexte d'un processus complet mais intégrés à une autre application. Si cette application mère a besoin d'instancier 2 fois notre application (ne serait-ce qu'utiliser une instance après l'autre, pas forcément les 2 en concurrence), il ne faudrait pas que le comportement puisse être différent.

    Il est possible de considérer les "variables de classes" comme des globales, donc mon idée c'est de ne plus jamais faire de "variables de classes" et par extension ne plus faire de "méthode de classe". Plus de "méthode de classe" car elles peuvent avoir besoin de stocker quelquechose dans une "variable de classe" (même si c'est pas le cas dans la première version de la méthode).
    Il est possible de réaliser l'équivalent en utilisant des méthodes d'instance sur des objets réels.
    Si on reprend l'exemple de la classe Math qu'on trouve un peu partout, au lieu d'avoir des méthodes de classe, on devrait instancier un objet Math et appeler les méthodes d'instance comme floor(), cos(), etc..

    Qu'en pensez vous? Est ce trop extrémiste de dire "plus jamais de..." ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Interdire les méthodes de classe est complètement idiot et redondant si tu interdis déjà les variables de classe.

    Si une fonction n'a pas d'état, alors elle ne doit pas nécessiter une instance. C'est pour ça qu'en .Net, Math est une classe statique alors que Random est une classe séparée à instancier...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    J'émettais l'hypothèse que toute méthode de classe pouvait évoluer telle qu'elle puisse utiliser des données globales.
    Ça pourrait être de la configuration ou des données de cache.
    Ok osef pour le cache, car le comportement est sensé être le même, mais il y a peut être des cas où justement j'aimerais vérifier qu'il n'y a pas de différence entre le premier appel où il n'y a pas de cache et le second appel où le cache est construit.
    Pour la configuration, ça pourrait faire l'objet d'un paramètre supplémentaire à la méthode de classe, mais c'est lourd à l'utilisation. Je peux pas démontrer en utilisant l'exemple de la classe Math car là c'est vraiment simple et je vois pas quelle configuration les méthodes pourraient avoir besoin.

Discussions similaires

  1. Template de liste, question POO
    Par losformen dans le forum C#
    Réponses: 5
    Dernier message: 23/03/2011, 09h18
  2. [Templates] Quelques questions POO/Template
    Par iwf-fr dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/04/2007, 16h04
  3. Question Poo en delphi
    Par the big ben 5 dans le forum Delphi
    Réponses: 6
    Dernier message: 03/11/2006, 10h25
  4. Question d'état sous delphi
    Par Tyler Durden dans le forum Delphi
    Réponses: 2
    Dernier message: 03/08/2006, 12h14
  5. [POO] Question POO
    Par shadeoner dans le forum Langage
    Réponses: 1
    Dernier message: 10/04/2006, 14h51

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