OK. Le .net les interdits quand elles sont managés pour les mêmes raison?
OK. Le .net les interdits quand elles sont managés pour les mêmes raison?
Raphchar.
Elles ne sont pas si interdites que ça: Une variable membre statique est l'équivalent d'une variable globale, surtout si elle est publique...
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.
De ce point de vue c'est vrai.
Raphchar.
Juste une remarque pour dire que les exemples du SDK de directx utilisent les variables globales:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 //----------------------------------------------------------------------------- // Global variables //----------------------------------------------------------------------------- LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device
Raphchar.
Oui, mais beaucoup d'exemples font des choses questionables. Parfois par soucis de simplicité (vu qu'utiliser une variable globale est généralement plus simple que les alternatives propres, comme SetWindowLongPtr()).
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.
ben il faut savoir faire la différence d'un code d'example qui se veut simple et compréhensible de suite, et un code d'un vrai projet avec différentes contraintes (des threads, plusieurs développeurs etc..)
C'est ça qui est difficile pour quelqu'un qui débute, car souvent les exemples sont donnés en prenant en considération que celui qui les lit connait bien le C++ et sait que dans un vrai projet il ne mettra pas tout dans des variables globales.
Et bien sûr, quand on dit "il ne faut pas utiliser de variables globales", il faut entendre "il ne faut pas en utiliser, sauf quand tu sauras vraiment pourquoi tu vas en utiliser".
Aussi, on va trouver toute sorte de variables globales "cachés" dans nos programmes: des singletons, des membres statiques, des constantes...
(bien sûr il ne faut pas non plus abuser des singletons etc..sous prétexte que c'est le seul design pattern dont on a retenu l'idée mais c'est un autre débat)
L'idée à comprendre est juste qu'il faut limiter au maximum la portée des variables pour éviter les problèmes.
Martin Fowler, Patterns of Enterprise Application Architecture (je reprends la citation dans le billet sur les singletons) :
Ce qui revient à ce que tu dis .Rappelez vous que toute variable globale est toujours coupable jusqu’à ce que vous ayez prouvé qu’elle est innocente.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
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