Si on a un fichier d'en-tête, disons "test.h" dontespace de noms dans la définition et la mise en œuvre
namespace test
{
enum ids
{
a = 1,
b = 2,
c = 3,
d = 30
};
char *names[50];
};
et un fichier source, "test.cc" essentiellement incluant seulement
test::names[test::a] = "yum yum";
test::names[test::c] = "pum pum";
// ...
Cela n'aurait-il pas plus de sens d'encapsuler l'implémentation dans l'espace de noms? Je dirais que ce serait, comme c'est après tout l'implémentation du fichier d'en-tête, il serait donc logique d'inclure l'implémentation dans le même espace de noms que l'en-tête sans préfixer manuellement toutes les variables avec test::
, et le préfixe lors de l'utilisation valeurs de l'extérieur.
C'est l'avis d'une recrue en C++, que diraient les gens les plus intelligents ici?
Oui, je sais que vous pourriez faire cela ... c'était simplement une question de "Est-ce une bonne pratique de le faire ou préférez-vous préfixer manuellement" :) – LukeN
@LukeN: Comme Lima Beans mentionné ci-dessous, c'est une question de préférence et de cohérence. Je préfère, et voudrais penser que j'utilise toujours la première méthode. Je pourrais faire valoir que le fait d'être explicite (comme vous l'étiez dans votre code) est probablement le plus solide puisqu'il exige explicitement que le développeur écrive ce qu'il veut dire plutôt que d'être plus implicite. L'inconvénient est qu'il nécessite plus de dactylographie et en tant que tel pourrait provoquer une arthrite précoce du poignet et des doigts ou éventuellement syndrome du canal carpien;) – andand
@LukeN: Je préfère aussi l'emballage, notez que la méthode «using» est désapprobatrice (même dans fichiers source). –