Otros me han dicho que escribir "usando el espacio de nombres std" en el código es incorrecto, y que debería usar "std::cout" y "std::cin" directamente.
¿Por qué se considera que "usar el espacio de nombres std;es una mala práctica? ¿Es ineficiente o se corre el riesgo de declarar variables ambiguas (variables que comparten el mismo nombre que una función en el espacio de nombres
std`)? ¿Influye en el rendimiento?
Esto no está relacionado con el rendimiento en absoluto. Pero considere lo siguiente: está utilizando dos bibliotecas llamadas Foo y Bar:
using namespace foo;
using namespace bar;
Todo funciona bien, y puedes llamar a Blah()
desde Foo y a Quux()
desde Bar sin problemas. Pero un día actualizas a una nueva versión de Foo 2.0, que ahora ofrece una función llamada Quux()
. Ahora tienes un conflicto: Tanto Foo 2.0 como Bar importan Quux()
a tu espacio de nombres global. Esto va a costar un poco de esfuerzo arreglarlo, especialmente si los parámetros de la función coinciden.
Si hubieras usado foo::Blah()
y bar::Quux()
, entonces la introducción de foo::Quux()
no habría sido un evento.
Otra razón es la sorpresa.
Si veo cout << blah
, en lugar de std::cout << blah
pienso: ¿Qué es este cout
? ¿Es el cout
normal? ¿Es algo especial?
Se trata de gestionar la complejidad. Usar el espacio de nombres traerá cosas que no quieres, y por lo tanto posiblemente lo hará más difícil de depurar (digo posiblemente). Usar std:: por todas partes es más difícil de leer (más texto y todo eso).
Cada cosa a su tiempo - gestiona tu complejidad como mejor puedas y te sientas capaz.