je veux dire avec de vrai arguments technique pas ce que les personne penseCa me parait etre une vision bien etroite et personnelle d'interprete ce sujet.Et je confirme faire du statique ce n'est pas de l'objet.(conseil : merci de bien réviser les concept objet)
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).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.
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
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.
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.
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.
ಠ_ಠ
Quand le code est long et que les objets intègrent des relations d'héritage.Est-ce que tu peux développer un peu plus?
Je conçois que c'est pratique, as-tu des exemples du cas contraire?
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
"Winter is coming" (ma nouvelle page d'accueil)
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...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
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.
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.
Delphi, jusquà la version 6 inclusetomlev: Je ne connais pas un seul langage objet qui ne propose pas la possibilité de faire des méthodes statiques...
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Pourtant c'est la même personne qui a créé Delphi et C#...
J'aurais plutot la remarque inverse...Envoyé par bartoumi
le mot clef "static" n'existe pas seulement en POO ?
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#
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.
Autant que je sache, ces deux dernières lignes sont équivalentes fonctionnellement et en termes de perf. Sauf que la deuxième est lourde.
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);
Les fonctions membres (et j'ignore la virtualité) ne sont qu'une notation.
ಠ_ಠ
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
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" !
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.
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.
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.
Ouais mais en C, "static" veut dire constante non ?Envoyé par tomlev
Je ne parlais pas du mot statique, mais de la "fonctionnalite"
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager