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

C# Discussion :

[c#] methodes statique Avantages/inconvénients


Sujet :

C#

  1. #41
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par bartoumi Voir le message
    Et je confirme faire du statique ce n'est pas de l'objet.(conseil : merci de bien réviser les concept objet)
    Et merci d'éviter ce genre d'énormités
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  2. #42
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    je veux dire avec de vrai arguments technique pas ce que les personne pense
    Et je confirme faire du statique ce n'est pas de l'objet.(conseil : merci de bien réviser les concept objet)
    Ca me parait etre une vision bien etroite et personnelle d'interprete ce sujet.

  3. #43
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    xxx : Et je confirme faire du statique ce n'est pas de l'objet.(conseil : merci de bien réviser les concept objet)
    Tober :Ca me parait etre une vision bien etroite et personnelle d'interprete ce sujet.
    d'accord avec Tober, un méthode statique peut être considérée comme une facilité d'écriture qui évite de faire précéder l'appel à la méthode par un Create d'un objet temporaire (et éventuellement de la faire suivre par un Dispose).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #44
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par bartoumi Voir le message
    Par personne n'a répondu à ma question. je veux dire avec de vrai arguments technique pas ce que les personne pense
    si t'avais bien lu le thread, tu aurais compris que la seule chose qui pourrait amener une différence de perf entre deux appels méthodes (statique ou pas), c'est l'utilisation de call ou callvirt.

    Citation Envoyé par bartoumi Voir le message
    Par la gestion de mémoire. je veux dire tout les objets qu'on serait amener à créer a l'intérieur de la méthode (statique ou non)
    Rien n'incite à penser que le garbage collector considère différemment les variables selon qu'elles sont déclarées dans une méthode d'instance ou dans une méthode statique.

    Citation Envoyé par bartoumi Voir le message
    (conseil : merci de bien réviser les concept objet)
    Tant de sollicitude me touche. Je m'en vais de ce pas expliquer aux concepteurs de C++, C# et java d'enlever ce mot clé impie.
    ಠ_ಠ

  5. #45
    Membre régulier Avatar de Onlava
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    Est-ce que tu peux développer un peu plus?
    Je conçois que c'est pratique, as-tu des exemples du cas contraire?
    Quand le code est long et que les objets intègrent des relations d'héritage.

    Bref, dès que ça devient plus compliqué de faire comme ça, je le fais pas.
    Désolé je trouve pas mieux comme définition, c'est vraiment au feeling.

    a+
    XOR Onlava, Onlava

  6. #46
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    Citation Envoyé par bartoumi Voir le message
    Seul certitude : En statique on fait pas de l'objet on fait du procédural
    Et encore, si je ne me trompe, il faut en plus que la classe soit statique sinon, un constructeur est ajouté par défaut. C'est ce que dit FXCop en tous les cas.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #47
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par bartoumi Voir le message
    Et je confirme faire du statique ce n'est pas de l'objet.(conseil : merci de bien réviser les concept objet)

    Je ne connais pas un seul langage objet qui ne propose pas la possibilité de faire des méthodes statiques... ce n'est pas parce que ces méthodes ne sont pas liées à une instance en particulier que ce n'est "pas de l'objet". Je serais curieux de connaître les sources qui te permettent d'affirmer ça...

  8. #48
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Citation Envoyé par bartoumi Voir le message
    Par la gestion de mémoire. je veux dire tout les objets qu'on serait amener à créer a l'intérieur de la méthode (statique ou non)
    La staticité d'une methode ne change rien à ce qu'il se passe ailleurs. Si l'objet est une classe, il est alloué dans le tas managé, si c'est une structure, il est stocké "in place".

    Donc, je veux bien croire que sur certains langages, la difference static/instance puisse avoir une repercussion notable (et encore) en terme de perfs, mais, en toute honneteté, en milieu managé, cette difference, si elle existe (je n'ai pas reussi à ecrire un test correct pour le mettre en evidence), est tout à fait negligeable. Et encore, c'est sans compter toutes les optimisations que pourrait etre amené à faire soit le compilateur soit le runtime (et ca, à part jouer du desassembler).

    Et les membres statiques peuvent tout à fait entrer dans une pratique objet, je ne vois pas tellement le probleme.

  9. #49
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Citation Envoyé par tomlev Voir le message

    Je ne connais pas un seul langage objet qui ne propose pas la possibilité de faire des méthodes statiques... ce n'est pas parce que ces méthodes ne sont pas liées à une instance en particulier que ce n'est "pas de l'objet"
    Je pense qu'il pose cette affirmation par rapport au fait qu'on définit en procédural une variable statique en tant que variable globale.

    Je suis d'avis de croire que les membres statiques font partie de la POO vu que le but c'est d'éviter de créer une instance rien que pour appeler une méthode par exemple. Faire une corrélation entre variable globale et membre statique peut je pense permettre d'appréhender plus facilement la POO quand on switch du procédural à la POO.

  10. #50
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    tomlev: Je ne connais pas un seul langage objet qui ne propose pas la possibilité de faire des méthodes statiques...
    Delphi, jusquà la version 6 incluse
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  11. #51
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Delphi, jusquà la version 6 incluse
    ben oui, mais comme je connais pas Delphi, ma phrase reste juste

  12. #52
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Pourtant c'est la même personne qui a créé Delphi et C#...

  13. #53
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Citation Envoyé par bartoumi
    Et je confirme faire du statique ce n'est pas de l'objet.(conseil : merci de bien réviser les concept objet)
    J'aurais plutot la remarque inverse...
    le mot clef "static" n'existe pas seulement en POO ?

  14. #54
    Membre actif Avatar de bartoumi
    Profil pro
    Inscrit en
    Février 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 178
    Points : 205
    Points
    205
    Par défaut
    Bonjour

    Ce n'est pas un comparatifs de langages que je cherche, c'est vraiment une vrai étude et/ou une réflexion (AVEC ARGUMENTS ET RÉFÉRENCES) sur le sujet

    1- Performance d'exécution.
    2- Gestion de mémoire
    3- Règles de choix entre Statique ou non.


    Merci de s'en tenir au sujet.


    La discussion comme vous le remarquez n'est pas si innocente que ça, je l'ai lancer suite a une discussion entre collègues et j'ai remarqué qu'on maitrise pas bien le sujet donc je voulais partager avec vous cette réflexion afin d'élever le niveau.

    D'avance merci
    I C#

  15. #55
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par bartoumi Voir le message
    1- Performance d'exécution.
    2- Gestion de mémoire
    3- Règles de choix entre Statique ou non.
    On s'acharne à te démontrer, et SirJulio est descendu jusqu'au code MSIL pour ça, qu'il n'y a pas de lien sensible entre performance et staticité. Qu'il n'y a pas de lien entre staticité et gestion de la mémoire. Que veux-tu de plus ?

    Je répète : la staticité est un concept de POO, pas de compilation ; il se justifie parce que toute méthode n'est pas liée à une instance. Si ta méthode fait partie d'un objet en tant qu'entité autonome, fais en une fonction membre. Si elle n'est qu'une fonction "pure" (style Math.sin au hasard) ou si elle n'est pas liée à un objet précis, fais en une fonction statique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A
    {
      int i;
      public void f() { i = 3; }
      public static void g(A a) { a.i = 3; }
    }
     
    A a = new A();
    a.f();
    A.g(a);
    Autant que je sache, ces deux dernières lignes sont équivalentes fonctionnellement et en termes de perf. Sauf que la deuxième est lourde.

    Les fonctions membres (et j'ignore la virtualité) ne sont qu'une notation.
    ಠ_ಠ

  16. #56
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Tober Voir le message
    J'aurais plutot la remarque inverse...
    le mot clef "static" n'existe pas seulement en POO ?
    non, ça existe en C par exemple

  17. #57
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par tomlev Voir le message
    non, ça existe en C par exemple
    Yep, même que ça veut pas du tout dire la même chose, et que du coup je connais pas mal de gens issus du C qui comprennent mal le static C# pour cette raison
    ಠ_ಠ

  18. #58
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par bartoumi Voir le message

    Merci de s'en tenir au sujet.

    Merci de nous recadrer sur le sujet alors que c'est toi qui nous pousse à dévier avec des énormités du genre "statique = procédural" !


    Citation Envoyé par bartoumi Voir le message
    1- Performance d'exécution.
    On te l'a dit, l'appel à une méthode statique est potentiellement plus rapide mais la différence est négligeable (voir inexistante) dans 99% des cas.
    Personnellement, pour pouvoir noter une différence, j'ai dû tester avec une hiérarchie de profondeur 6.

    Citation Envoyé par bartoumi Voir le message
    2- Gestion de mémoire
    Les membres et méthodes statiques sont alloués dans une zone spéciale du tas : le HFH (High Frequency Heap). Il s'agit d'une zone distincte qui n'est pas sous la gestion du GC et qui est unique par domaine.

    Citation Envoyé par bartoumi Voir le message
    3- Règles de choix entre Statique ou non.
    La nature même de la staticité répond déjà à la question...et des compléments ont déjà été apportés dans cette discussion.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  19. #59
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Citation Envoyé par tomlev
    non, ça existe en C par exemple
    Ouais mais en C, "static" veut dire constante non ?
    Je ne parlais pas du mot statique, mais de la "fonctionnalite"

  20. #60
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Tober Voir le message
    Ouais mais en C, "static" veut dire constante non ?
    Non
    Dans une déclaration de variable locale, ça fait que la variable conserve sa valeur entre 2 appels de la fonction
    Dans une déclaration de variable globale, ça rend la variable "privée" (accessible seulement dans le module où elle est définie)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Avantages / inconvénients de BSD face à linux
    Par Community Management dans le forum Distributions
    Réponses: 129
    Dernier message: 17/01/2011, 18h51
  2. Methodes statiques
    Par romeo9423 dans le forum C++
    Réponses: 3
    Dernier message: 01/02/2006, 11h30
  3. [Singleton] difference singleton classe avec methodes statiques
    Par matN59 dans le forum Design Patterns
    Réponses: 6
    Dernier message: 15/01/2006, 11h04
  4. Réponses: 5
    Dernier message: 27/07/2004, 15h57
  5. Oracle -> Postgres (avantages/ inconvénients)
    Par milka dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/03/2004, 11h58

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