10.2.3. El uso de los espacios de nombres

Algunas de las reglas de arriba pueden parecer un poco desalentadoras al principio, especialmente si tiene la impresión que las utilizará constantemente. No obstante, en general es posible salir airoso con el uso de espacios de nombres fácilmente siempre y cuando comprenda como funcionan. La clave a recordar es que cuando introduce una directiva using global (vía "using namespace" fuera de cualquier rango) usted ha abierto el espacio de nombres para ese archivo. Esto suele estar bien para un archivo de implementación (un archivo "cpp") porque la directiva using sólo afecta hasta el final de la compilación de dicho archivo. Es decir, no afecta a ningún otro archivo, de forma que puede ajustar el control de los espacios de nombres archivo por archivo. Por ejemplo, si usted descubre un cruce de nombres debido a que hay demasiadas directivas using en un archivo de implementación particular, es una cuestión simple cambiar dicho archivo para que use calificaciones explícitas o declaraciones using para eliminar el cruce sin tener que modificar ningún otro archivo de implementación.

Los ficheros de cabecera ya son otra historia. Prácticamente nunca querrá introducir una directiva using global en un fichero de cabecera, puesto que eso significaría que cualquier otro archivo que incluyese la cabecera también tendría el espacio de nombres desplegado (y un fichero de cabecera puede incluir otros ficheros de cabecera).

Por tanto, en los ficheros de cabecera debería utilizar o bien cualificación explícita o bien directivas using de ámbito y declaraciones using. Éste es el método que encontrará en este libro. Siguiendo esta metodología no «contaminará» el espacio de nombres global, que implicaría volver al mundo pre-espacios de nombres de C++.