I simboli di prefisso sono considerati anche come namespace?

2

Ad esempio, la convenzione Objective-C prevede di precedere i simboli con due o tre lettere maiuscole che sono le abbreviazioni del progetto: NSString, CABasicAnimation, MGTwitterEngine ... In C, anche molti progetti lo fanno (OpenGL e nginx per esempio) .

È anche considerato il namespace o mi manca qualcosa?

    
posta rightfold 28.02.2011 - 02:20
fonte

3 risposte

9

Penso che non sia tecnicamente un gioco di parole in senso moderno, è più simile all'antenato del namespace. È fatto per lo stesso motivo (disambiguazione) e ha molti degli stessi vantaggi.

    
risposta data 28.02.2011 - 02:40
fonte
1

C'è un certo numero di sensi nella parola "spazio dei nomi". In C, ad esempio, le strutture si trovano in uno spazio dei nomi diverso rispetto alle variabili locali. Tradizionalmente, si farebbe riferimento a "struct mystruct" piuttosto che a "mystruct". Dimentico per la C corrente, ma in C ++ puoi normalmente (ma non sempre) cancellare la parola "struct" - la struttura del namespace perde, ma solo quando non causa ambiguità.

Penso che moz abbia ragione per denominare la convenzione "namespace" come questa.

I prefissi dei nomi sono comuni in C per evitare ambiguità quando vengono utilizzate più librerie insieme. Rendere questi prefissi semi-opzionali ha senso in quel contesto. I moduli sono in circolazione da molto tempo in alcune lingue, e ovviamente a livello superficiale fanno la stessa cosa - ma il "prefisso" è tipicamente opzionale. Gli spazi dei nomi in stile C ++ sono da qualche parte nel mezzo - un tipo di modulo che non è un modulo.

Quindi sì, ho il sospetto che esistesse una sorta di "OK - i moduli possono aiutare a risolvere questo problema, ma non abbiamo davvero bisogno di moduli perché abbiamo già la logica #include e le classi - adattiamo" agli spazi dei nomi C ++.

Ovviamente, #include e le classi non risolvono tutti i tuoi problemi di modularità, anche con i namespace - ma questa è un'altra storia.

    
risposta data 28.02.2011 - 06:48
fonte
-1

Assolutamente no.

Un potente IDE (come Visual Studio, in particolare VS con Resharper) ti aiuterà a rifattorizzare e rinominare i namespace molto facilmente con quasi assoluta certezza.

Eseguire un'operazione di ridenominazione o di refactoring simile su simboli prefissati può essere eseguita solo con un'utilità grep, e persino un'utilità grep non può mai essere così sicura che tutti i simboli e i tipi applicabili (e solo applicabili simboli e tipi) sono stati modificati.

    
risposta data 28.02.2011 - 05:08
fonte

Leggi altre domande sui tag