OVH Cloud OVH Cloud

namespace et style

16 réponses
Avatar
Loïc Joly
Bonjour,

Je me pose une question de style pour les namespaces : Est-ce que vous é
crivez :

// 1
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}

ou bien :

// 2
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}

ou encore :

// 3
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}

La solution 1 me semble la plus propre, mais bouffe 12 caractères utiles
par ligne, ce qui rend le code un peu plus difficile à écrire clairemen
t. Actuellement, j'utilise plutôt la méthode 2, mais ce n'est pas forcém
ent hyper lisible. Qu'en pensez vous ?

--
Loïc



=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Article poste via Voila News - http://www.news.voila.fr
Le : Wed Oct 15 13:54:35 2003 depuis l'IP : clara2.renault.fr [VIP 8630229]

10 réponses

1 2
Avatar
Adrien Constant
Et la version avec des petites fleurs ?

Loïc Joly wrote:
Bonjour,

Je me pose une question de style pour les namespaces : Est-ce que vous é
crivez :

// 1
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}

ou bien :

// 2
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}

ou encore :

// 3
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}

La solution 1 me semble la plus propre, mais bouffe 12 caractères utiles
par ligne, ce qui rend le code un peu plus difficile à écrire clairemen
t. Actuellement, j'utilise plutôt la méthode 2, mais ce n'est pas forcém
ent hyper lisible. Qu'en pensez vous ?



Avatar
Jean-Marc Bourguet
Loïc Joly writes:

La solution 1 me semble la plus propre, mais bouffe 12 caractères
utiles par ligne, ce qui rend le code un peu plus difficile à écrire
clairement. Actuellement, j'utilise plutôt la méthode 2, mais ce
n'est pas forcém ent hyper lisible. Qu'en pensez vous ?


J'utilise 1 mais pas de namespace imbriques (et une indentation moins
forte que toi).

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
Gabriel Dos Reis
Adrien Constant writes:

| Et la version avec des petites fleurs ?

c'est de l'art abstrait.

-- Gaby
Avatar
Michel Michaud
Dans news:bmjchr$sb4$, Loïc
Je me pose une question de style pour les namespaces : Est-ce que
vous é crivez :

// 1
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}


Ça ne m'est jamais arrivé de considérer ainsi plusieurs
niveaux de namespace. As-tu un exemple (ou une explication)
plus concrète ?

Par ailleurs, pour l'emploi d'un seul niveau, je n'indente
pas, mais ce n'est pas un problème puisque j'indente les
{} de l'ouverture des fonctions/classes/etc. Merci de me
fournir une raison supplémentaire !

namespace NS
{

class C
{
};

void Toto()
{
}

} // Fin du namespace NS

(oui, je mets toujours un commentaire à la fermeture d'un
namespace...)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Fabien LE LEZ
On Wed, 15 Oct 2003 12:26:07 -0400, "Michel Michaud"
wrote:

(oui, je mets toujours un commentaire à la fermeture d'un
namespace...)


AOL
--
http://www.giromini.org/usenet-fr/repondre.html

Avatar
Patrick Mézard
Ça ne m'est jamais arrivé de considérer ainsi plusieurs
niveaux de namespace. As-tu un exemple (ou une explication)
plus concrète ?


C'est comme ça que c'est fait dans boost par exemple (comme c'est original
comme exemple). Ca permet d'avoir un niveau de namespace global commun
"boost" à toute la bibliothèque, puis des namespaces spécialisés pour les
sous-ensembles comme "regex" (expressions régulières) ou "math", etc...
L'imbrication et la spécialisation des namespaces donne un coté modulaire
assez prisé dans d'autres langages.

C'est vrai que ça peut paraître un peu artificiel dans le cas de boost,
puisque que ça se justifie beaucoup par son coté bibliothèque. Pourtant,
encapsuler tout le code écrit par une entité (société/labo/ce que vous
voulez) dans un namespace donné se révèle bien pratique à l'usage (pour peu
d'avoir bien choisi son nom dès le départ :).

Ah, oui et j'utilise plutôt 3, avec un commentaire à la fermeture du
namespace.

Patrick Mézard

Avatar
Michel Michaud
Dans news:, Fabien LE
On Wed, 15 Oct 2003 12:26:07 -0400, "Michel Michaud"
wrote:

(oui, je mets toujours un commentaire à la fermeture d'un
namespace...)


AOL


IDGI

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Loïc Joly
Michel Michaud wrote:

Dans news:bmjchr$sb4$, Loïc

Je me pose une question de style pour les namespaces : Est-ce que
vous é crivez :

// 1
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}



Ça ne m'est jamais arrivé de considérer ainsi plusieurs
niveaux de namespace. As-tu un exemple (ou une explication)
plus concrète ?


Oui, le premier niveau est un namespace qui identifie notre projet dans
son ensemble (ça pourrait aussi être le nom de ma boîte, si j'étais dans
une petite boîte d'info), et le deuxième niveau, c'est pour définir les
grands sous ensembles du projet, pour éviter les collisions entres 2
personnes travaillant sur deux parties différentes du projet et ne
communiquant pas beaucoup entre elle. Et puis aussi pour clarifier le
code client.

Le troisième niveau, c'était juste pour insister sur mon problème. Quoi
que de temps en temps, il me serve pour des namespaces anonymes.


[...]

(oui, je mets toujours un commentaire à la fermeture d'un
namespace...)


Moi aussi, je ne l'ai pas mis dans mon exemple afin de mieux cibler ma
question.

--
Loïc


Avatar
Loïc Joly
Loïc Joly wrote:

Michel Michaud wrote:

Dans news:bmjchr$sb4$, Loïc

Je me pose une question de style pour les namespaces : Est-ce que
vous é crivez :

// 1
namespace a
{
namespace b
{
namespace c
{
void toto()
{
cout << "toto" << endl;
}
}
}
}




Ça ne m'est jamais arrivé de considérer ainsi plusieurs
niveaux de namespace. As-tu un exemple (ou une explication)
plus concrète ?



Oui, le premier niveau est un namespace qui identifie notre projet dans
son ensemble (ça pourrait aussi être le nom de ma boîte, si j'étais dans
une petite boîte d'info), et le deuxième niveau, c'est pour définir les
grands sous ensembles du projet, pour éviter les collisions entres 2
personnes travaillant sur deux parties différentes du projet et ne
communiquant pas beaucoup entre elle. Et puis aussi pour clarifier le
code client.

Le troisième niveau, c'était juste pour insister sur mon problème. Quoi
que de temps en temps, il me serve pour des namespaces anonymes.


J'ai oublié de préciser que par exemple, le .NET framework pousse la
logique encore plus loin, avec des imbrications bien plus profonde (et
que les exemples sont en C# ou en VB, et qu'en C++ il faut deviner si le
. doit se traduire en -> ou en ::).

Par exemple, les namespaces suivants sont définis :
System.Collections
System.Runtime.Serialization
System.Runtime.Serialization.Formatters

--
Loïc



Avatar
Laurent DELEPINE
Loïc Joly wrote:

La solution 1 me semble la plus propre, mais bouffe 12 caractères utiles
par ligne, ce qui rend le code un peu plus difficile à écrire clairemen
t. Actuellement, j'utilise plutôt la méthode 2, mais ce n'est pas forcém
ent hyper lisible. Qu'en pensez vous ?

emacs dit 1 aussi. Et je prefere ne pas le contrarier. Mais je n'ai pas

autant de namespace imbriqué que toi.



A+

LD

1 2