Dlaczego korzystanie z using namespace std jest złą praktyką?

Rozpoczęty przez edd
Ca33385adac16b542da407a2eb9b1851?s=128&d=mm

edd

Słyszałem, że używanie w kodzie using namespace std jest złą praktyką. Zamiast tego powinno się używać np std::cout i std::cin.
Proszę o wyjaśnienie dlaczego tak jest. Podejrzewam, że chodzi o konflikty nazw, ale czy są jeszcze jakieś wady, np kwestie wydajności?

4052b78b684471a19d3dca1d3e752db8?s=128&d=mm

wilq

Temat ten nie jest związany z wydajnością. Tak jak podejrzewasz, chodzi o konflikty nazw. Załóżmy że używasz w projekcie dwóch bibliotek LibA oraz LibB. Używasz też poniższego kodu.

using namespace lib_a
using namespace lib_b

Powiedzmy, że biblioteka LibA posiada metodę method_1, a biblioteka LIbB zawiera method_2. Wszystko działa, nie ma żadnych problemów. Jednak może się okazać, że w pewnym momencie zaktualizujesz LIbA i po aktualizacji zawiera ona metodę method_2, która jednak jest zupełnie czym innym niż method_2 z LibB. W takiej sytuacji, spotkasz się z problemami, a przywrócenie poprawnego działania kodu, może zająć sporo czasu.

Jeśli nie użyjesz using namespace, tylko będziesz korzystać z lib_a::method_1 i lib_b::method_2, to dodanie method_2 do libA, nie będzie miało wpływu na wywołania lib_b::method_2 i nie przysporzy Ci niepotrzebnych problemów.

Zaloguj się, aby odpowiedzieć