nimiavaruuden koostumuksen käyttäminen
ohjelmoinnin parhaat käytännöt ehdottavat uusien tietojen tai toimintojen tallentamista järkevään, ainutlaatuiseen nimiavaruuteen aina, kun se on mahdollista. Tämän katsotaan olevan etu verrattuna kaiken jättämiseen maailmanlaajuiseen nimiavaruuteen, koska silloin nimihaku voidaan yksiselitteisesti ottaa käyttöön tai esittää, kuten yllä, symbolit mankeloidaan jatkuvasti ilman toistuvia etuliitteitä tai makroja jne.
tarkastellaan esimerkiksi projektia, joka määrittelee suurimman osan luokistaan namespace gtk
. namespace gtk
– namespace std
on mahdollista mukauttaa käyttämällä C++-ominaisuutta, jota kutsutaan nimikkoavaruuskoostumukseksi. Näin tapahtuu, jos käytetään-ilmoitus laitetaan amespace-määritelmä: tuotu symboli(t) saa tuoda thecurrently active namespace(s). Esimerkiksi:
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
tässä esimerkissä std::string
saa tuodanamespace gtk
. Tuloksena on, että käyttöstd::string
sisällä nimiavaruus gtk voi vain käyttää string
, ilman eksplisiittistä qualification.As lisäbonus,std::string
ei tule tuoduksi maailmanlaajuiseen nimiavaruuteen. Lisäksi taaksepäin yhteensopivuudesta ja siirrettävyydestä voidaan tehdä monimutkaisempia järjestelyjä, jolloinusing
-ilmoitukset voidaan kääriä makroihin, jotka on asetettu autoconf-testien perusteella joko ”” tai using std::string;
(riippuen siitä, onko järjestelmällä std::
liibstdc++ vai ei). (ideoita willewellyltä ja Karl Nelsonilta)