2017-06-03 50 views
5

Chcę dołączyć więcej niż jedną przestrzeń nazw w tym samym pliku .cpp.Czy dobrą praktyką jest używanie wielu przestrzeni nazw w tym samym źródłowym pliku C++?

Podczas gdy std jest szeroko stosowany, przestrzeń nazw z3 będzie używana w około 10% z 25 plików KLOC.

będzie to dobra praktyka, aby używać zarówno jako

using namespace std; 
    using namespace z3; 

Mam na myśli używając tylko std a następnie użyć metody Z3 przez wymienienie namespase każde żądanie. Podobnie jak,

using namespace std; 

    z3::context c; 
    z3::solver s; 

Który z nich jest lepszą praktyką?

Nie chcę zmieniać ich nazwy w jeden obszar nazw.

Dzięki i pozdrawiam, Sukanya

+0

jeśli piszesz 'using namespace r3' więc dlaczego by go creat? –

+8

Zacznę od sprawdzenia, czy w jakiś sposób można podzielić plik 25K loc (!) Na mniejsze. – Mureinik

+0

@Mureinik, tak, powinienem to zrobić. Nie podchodźcie do tego. Dzięki. –

Odpowiedz

8

To faktycznie najlepsza praktyka nie importować całą nazw do programu, ponieważ zanieczyszcza swoją nazw. Może to prowadzić do nazwania kolizji i nadęcia programów. Najlepiej importować tylko to, z czego korzystasz.

Więc zamiast:

using namespace z3; 

Należy zamiast zrobić:

using z3::context; 
+2

Ditto z zawartością 'std' – user4581301

+0

Dziękuję. To pomogło mi zdecydować. Dzięki jeszcze raz. –

+1

Nie tylko nazywanie kolizji. Bardziej niebezpieczne jest to, że zachowanie kodu może cicho się zmieniać, na przykład, jeśli oba przestrzenie nazw zawierają funkcję o tej samej nazwie, ale nieco inne parametry (przeciążenie). Zobacz [ten prosty przykład] (http://coliru.stacked-crooked.com/a/578f9934725ffd90). – zett42