OVH Cloud OVH Cloud

namespaces et importation de classes/namespaces

47 réponses
Avatar
tibug
Bonjour,

[questions de débutant niveau pâquerettes :]

A mon niveau je vois juste les namespaces un peut comme des "librairies"
pour pouvoir organiser les objets et éviter les collisions (bon terme?).

fondamentalement je ne vois pas trop la différence entre utiliser un
namespace qui contiendrait un objet déclaré static et utiliser une
classe de type singleton ayant leur instance globale ...

les namespaces sont t'il chargés/déchargés quand il y en a
besoin/plus besoin ?

Est-ce que ça coûte plus cher en CPU/RAM d'utiliser un objet à
déclaré à l'interieur d'un namespace plutôt qu'à un objet du même
type déclaré en dehors ?

Sinon comment fait-on pour importer, dans un namespace A des classes
(implémentées dans d'autres fichiers) et faire en sorte que ces classes
ne puissent pas être visibles/utilisés directement ailleurs dans le code
(sans passer par le namespace N) ?
faut t'il obligatoirement en faire une librairie ?
(j'ai tenté des trucs vite fait avec extern mais ça ne compilait pas)

Pareil pour les namespaces, faut t'il obligatoirement quelque chose
comme :

//.h :
namespace A {
int MA();
namespace B { int MB(); }
}

//.cpp(s)
int A::mA() { return 1; }
int A::B::MB() { return 2; }


A+

tibug

10 réponses

1 2 3 4 5
Avatar
Jean-Marc Bourguet
Marc Boyer writes:

Mais avant de demander aux développeurs d'aller modifier à la
main tous les sources, je serais quand même tenté de commencer
par ma version.


Ce qui est certain, c'est que c'est une optimisation. Et donc que ce
n'est a mettre en place:
- que si on a un probleme
- qu'apres avoir verifie que ca ameliorait substantivement
- qu'en ayant examine les alternatives (qui comportent aussi des
en-tetes precompiles, l'amelioration des infrastructures reseau,
...)

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Fabien LE LEZ
On 20 Mar 2005 23:48:34 -0800, :

on
pourrait facilement ajouter des gardes externes au moyen d'un
script assez simple.


Tu sais, un script qui ouvre chaque .h, lit le nom de garde, et
rajoute les gardes externes, n'est pas tellement plus compliqué ;-)

Ce qui n'empêche qu'il faut effectivement des règles rigoureuses, ne
serait-ce que pour éviter que deux headers aient le même nom de
garde...


--
;-)

Avatar
Fabien LE LEZ
On 20 Mar 2005 23:40:35 -0800, :

Ceci dit, il faut se rappelait qu'à l'époque, la plupart des
machines sur le reseau n'avaientt pas de disque local.


À une époque où un PC avec un disque dur énorme et assez de RAM pour y
faire tenir un gros projet en entier coûte moins de 500 EUR, tout ça
a-t-il encore vraiment un sens ?


--
;-)

Avatar
Fabien LE LEZ
On 21 Mar 2005 11:35:59 +0100, Jean-Marc Bourguet :

Je me demande si un facteur important n'etait pas l'ouverture d'un
fichier sur le reseau plus que la taille du fichier


Il me semble que c'est bien le cas. Et qu'un réseau à 1 Gbps n'est pas
forcément beaucoup plus efficace qu'un réseau à 10 Mbps sur ce
coup-là.
D'où l'idée que la première étape doit être de ramener tous les
fichiers sur la machine de compilation.


--
;-)

Avatar
Matthieu Moy
Fabien LE LEZ writes:

Il me semble que c'est bien le cas. Et qu'un réseau à 1 Gbps n'est pas
forcément beaucoup plus efficace qu'un réseau à 10 Mbps sur ce
coup-là.
D'où l'idée que la première étape doit être de ramener tous les
fichiers sur la machine de compilation.


Ou d'utiliser un système de cache efficace.

--
Matthieu

Avatar
Fabien LE LEZ
On Mon, 21 Mar 2005 14:32:13 +0100, Matthieu Moy
:

D'où l'idée que la première étape doit être de ramener tous les
fichiers sur la machine de compilation.


Ou d'utiliser un système de cache efficace.


Ce qui revient à télécharger chaque fichier un seule fois, la première
fois qu'on en a besoin. S'il y a beaucoup de petits fichiers, ça peut
être moins efficace que les télécharger en bloc.


--
;-)


Avatar
kanze
Fabien LE LEZ wrote:
On 20 Mar 2005 23:40:35 -0800, :

Ceci dit, il faut se rappelait qu'à l'époque, la plupart des
machines sur le reseau n'avaientt pas de disque local.


À une époque où un PC avec un disque dur énorme et assez de
RAM pour y faire tenir un gros projet en entier coûte moins de
500 EUR, tout ça a-t-il encore vraiment un sens ?


Éventuellement, oui. Si chaque développeur travaille sur une
copie locale (de n'importe quoi), tu as un sacré problème à
s'assurer que tout le monde à la version qui lui convient.
Tandis qu'avec une solution centralisée, genre Clearcase, il n'y
a aucun problème.

Ceci dit, avec les machines modernes (avec beaucoup de mémoire
pour caches les secteurs), et un reseau plus rapide... Qui sait ?

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Matthieu Moy
writes:

Éventuellement, oui. Si chaque développeur travaille sur une
copie locale (de n'importe quoi), tu as un sacré problème à
s'assurer que tout le monde à la version qui lui convient.
Tandis qu'avec une solution centralisée, genre Clearcase, il n'y
a aucun problème.


Euh, il n'y a pas non plus que clearcase, dans la vie, comme
gestionnaire de versions. Et a ma connaissance, clearcase est le seul
a charger autant le serveur.

En général, le développeur travaille sur une copie locale et n'accède
au serveur que pour les commit/update/merge/...

--
Matthieu

Avatar
kanze
Matthieu Moy wrote:
writes:

Éventuellement, oui. Si chaque développeur travaille sur une
copie locale (de n'importe quoi), tu as un sacré problème à
s'assurer que tout le monde à la version qui lui convient.
Tandis qu'avec une solution centralisée, genre Clearcase, il
n'y a aucun problème.


Euh, il n'y a pas non plus que clearcase, dans la vie, comme
gestionnaire de versions. Et a ma connaissance, clearcase est
le seul a charger autant le serveur.


C'est aussi à peu près le seul qui marche pour des gros projets.
Au moins parmi ce dont je me suis servi. (Mais tous les autres
suivait plus ou moins le modèle CVS.)

En général, le développeur travaille sur une copie locale et
n'accède au serveur que pour les commit/update/merge/...


Ça marche pour des petits projets. Ça finit vite par poser les
problèmes sur les gros.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Matthieu Moy
writes:

Matthieu Moy wrote:

Euh, il n'y a pas non plus que clearcase, dans la vie, comme
gestionnaire de versions. Et a ma connaissance, clearcase est
le seul a charger autant le serveur.


C'est aussi à peu près le seul qui marche pour des gros projets.
Au moins parmi ce dont je me suis servi. (Mais tous les autres
suivait plus ou moins le modèle CVS.)

En général, le développeur travaille sur une copie locale et
n'accède au serveur que pour les commit/update/merge/...


Ça marche pour des petits projets. Ça finit vite par poser les
problèmes sur les gros.


Tu considères bien entendu le noyau Linux, OpenOffice, Mozilla,
GCC, ... comme des petits projets ...

--
Matthieu


1 2 3 4 5