Quale sarebbe un buon sistema per utilizzare i nomi di dominio come spazi dei nomi C ++ al fine di evitare conflitti tra i nomi degli sviluppatori? L'idea sembra essere popolare nel mondo di Java.
Non possiamo utilizzare namespace example.com { ... }
, poiché i punti non sono consentiti.
Una soluzione pratica, ma come trovo non molto elegante, sarebbe sostituire ogni punto con un carattere che di solito non fa parte di alcun dominio, come un trattino basso (ho letto da qualche parte che i domini potrebbero anche contenere underscore, ma Non vedo questo è ampiamente usato). Questo lo renderebbe: namespace example_com { ... }
.
Potremmo usare gli spazi dei nomi nidificati, in tal modo sostituendo efficacemente il punto con il separatore di spazi dei nomi ::
, quindi sarebbe: namespace example { namespace com { ... }}
e ci faremo riferimento ad esso da example::com
. Lo svantaggio di questo è che suggerisce che com
è una parte di example
. Ma vorrei considerare il dominio come un'unità una . Altrimenti, la notazione inversa del dominio andrebbe bene: com::example
. Ma la mia impressione è che il modo rilassato in cui i domini possono essere registrati ha reso questa gerarchia priva di significato per la maggior parte. Che cosa significherebbe lo spazio dei nomi com
(lo spazio dei nomi esterno)? Risposta: per codice scritto da chiunque abbia un dominio .com
e che può essere quasi chiunque . Cosa significherebbe namespace net
o info
? Non mi sembra utile.
Qualcuno ha un'idea migliore o può confutare la mia critica riguardo al significato dei domini di primo livello?
Aggiornamento : ecco alcuni retroscena della mia domanda. Sto supervisionando un piccolo team di sviluppatori. In qualche parte, lavorano su librerie con funzionalità concorrenti (questo è inteso, poiché stiamo sperimentando diversi modi di fare le cose). Quindi abbiamo già avuto scontri sul nome (immaginate le librerie chiamate libmatrix
o anche libmisc
). La soluzione facile sarebbe uno spazio dei nomi per sviluppatore e tengo traccia dei nomi utilizzati. Tuttavia, preferirei qualcosa di più costruito per ultimo. Inoltre, è concepibile che collaboriamo con altri gruppi di una struttura simile, e quindi abbiamo bisogno di qualcosa di globale.