Gdzie wypisywać przestrzeń nazw (lkod using namespace np. std;)

Odpowiedz Nowy wątek
2019-11-08 17:21
0

Witam.
Uczę się programowania od bardzo niedawna.
W książce Stephena Praty natknąłem się na stwierdzenie, że przestrzeń nazw najlepiej zapisywać tylko tam, gdzie będzie użyta, a nie poza funkcjami (tak jak na górze przed funkcją main), ale widzę, że właściwie we wszystkich napotkanych do tej pory kodach jest wpisywana poza funkcjami, zaraz po dyrektywie preprocesora.
Moje pytanie brzmi: Gdzie należy umieszczać przestrzeń nazw, żeby było to w dobrym guście i kiedyś nie dostać za to ochrzanu?

Pozostało 580 znaków

2019-11-08 17:32
kq

Prata ma tutaj rację. W przykładach pewnie widzisz kod nakierowany na zobrazowanie problemu/rozwiązania, a nie podążanie za wszystkimi dobrymi praktykami.


Pozostało 580 znaków

2019-11-08 18:26
1

Zazwyczaj robię plik "usable_namespaces.hpp"
W którym piszę to using namespace std
I dołączam go do każdego pliku w projekcie.
Teraz wyobraźmy sobie że nagłe zdecydowano użyć zamiast std::vector lepszy/szybszy/sprytniejszy/... megasuper::vector
Więc:

  • w przypadku rady od Prata zmiany są w każdym miejscu użycia vector'a (wiele razy na plik)
  • w przypadku tego co widzisz w przykładach tylko w plikach gdzie użyto std::vector (raz na plik)
  • w przypadku użycia mojego rozwiązania - tylko jedno miejsce.

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2019-11-08 18:26
Pokaż pozostałe 4 komentarze
Super, jesteś mega genialnym wieszczem, to czemu nie użyć using namaspace std ? Jak wiesz że kontenery się nie zmienią? - _13th_Dragon 2019-11-08 21:25
Głównie ze względu na konflikty nazw dla mnie. Z wieszczycielstwem nie przesadzajmy, po prostu taka specyfika większości moich projektów, że wystarczy nie przesadzać i wydajność jest ok ;​) - kq 2019-11-08 21:26
Ze co masz kilka klas o nazwie vector w projekcie? - _13th_Dragon 2019-11-08 21:27
Akurat vector w sumie mogę mieć (np. wektor fizyczny), zresztą bardziej myślę o zewnętrznych zależnościach, gdzie nie zawsze masz kontrolę. - kq 2019-11-08 21:31
to zamykasz wszystko we własnej przestrzeni i dodajesz (wewnątrz własnej przestrzeni) #include usable_namespaces.hpp - _13th_Dragon 2019-11-08 21:34

Pozostało 580 znaków

2019-11-09 08:12
0

Nie powinno używać się przestrzeni nazw ( z małymi wyjątkami ) w plikach nagłówkowych w miejscu o globalnym zasięgu.
https://github.com/isocpp/Cpp[...]delines.md#Rs-using-directive

Unikam stron, na których głoszone są reguły, które są łamane na tej samej stronie ciut niżej. - _13th_Dragon 2019-11-09 13:14

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot