asume que he declarado una función (o clase, no importa) en un archivo de cabecera, que es parte del espacio de nombres foo:Mejores prácticas: ¿usar espacio de nombres o volver a abrir el espacio de nombres?
namespace foo
{
void bar();
…
}
Durante mucho tiempo he estado volver a abrir el espacio de nombres cuando fue la definición de la función en un archivo CPP:
namespace foo
{
void bar()
{
doSomething();
…
}
}
Eso es porque he aprendido de esta manera y fue usado en un proyecto en el que estaba trabajando. Realmente nunca a pesar de ello, hasta hace poco, cuando me topé con un proyecto que utiliza la directiva using en su lugar:
using namespace foo;
void bar()
{
doSomething();
…
}
Finalmente hay una opción de utilizar el nombre completo. Me parece bastante tedioso, especialmente cuando se trata de clases con muchos miembros. En mi opinión, no tiene mucho sentido cuando todo el contenido del archivo es parte de un espacio de nombres.
void foo::bar()
{
doSomething();
…
}
Así que mi pregunta es ¿cuál debería preferirse y por qué? Especialmente con respecto a las dos primeras opciones (usar el espacio de nombres de directiva frente a reabrir).
Yo diría que es una cuestión de preferencia personal.Yo mismo uso una combinación de la primera y la última de tus alternativas. –
Acepto que es una cuestión de preferencia personal. 'foo :: bar' es repetitivo pero greppable, aunque eso podría ser irrelevante si las personas solo buscan en su fuente usando un IDE. –
Es como preguntar si es mejor usar pestañas o 4 espacios. ** No te preocupes por las cosas pequeñas. ** :) – LihO