Nome dell'API e namespacing [chiuso]

0

È giusto o più bello nominare le funzioni con un prefisso, come in Qt? O utilizzando "molti" spazi dei nomi, ma nomi "normali" per le funzioni? Ad esempio,

slOpenFile(); //"sl" means "some lib"

vs

some_lib :: :: file_functions OpenFile ();  

Aggiornamento: Ho letto da qualche parte che la prima variante (usando un prefisso) è migliore, perché gli utenti API possono eseguire ricerche "veloci" tra la documentazione e in Internet. Per esempio. digitando il motore di ricerca del prefisso magico inizia a consigliare le funzioni esatte. È sufficiente usare la prima variante?

    
posta Dehumanizer 27.06.2011 - 12:18
fonte

4 risposte

3

Quest'ultimo è migliore, se possibile.

  • In molte lingue (incluso C ++), puoi semplicemente usare / importare pacchetti / spazi dei nomi, in modo da non dover ripetere ripetutamente l'intero percorso. Al contrario, i prefissi devono sempre essere usati.
  • Gli spazi dei nomi facilitano l'evitamento della collisione. Molte librerie sono semplicemente precedute dal dominio dei creatori di librerie (ad esempio com.google.android.maps ). Ci sono solo 676 possibili prefissi a due lettere, ma ci sono sicuramente più di 676 librerie là fuori. Dannato è colui che ha bisogno di due con lo stesso prefisso.
  • I namespace consentono il nesting, quindi puoi avere some_lib::file_functions::openFile e some_lib::file_functions::closeFile e some_lib::sound_functions::beep , mentre non puoi farlo con prefissi: slOpenFile , slCloseFile , slBeep . Gli spazi dei nomi nidificati consentono di comunicare la struttura.

Come per il reclamo, i prefissi rendono più facile la ricerca. Anche supponendo che sia vero (che IMHO è bs): vuoi progettare una buona API. Bene, una buona API viene fornita con nomi di funzioni espressive, autoesplicative e una documentazione sufficiente a coprire qualsiasi ambiguità.

    
risposta data 27.06.2011 - 19:22
fonte
2

In questi giorni some_lib::file_functions::openFile(); è di moda in quanto ciò è conforme al modello di progettazione corretto e soddisfa meglio il concetto di OOP.

È molto importante dare un nome API significativo.

    
risposta data 27.06.2011 - 12:34
fonte
2

Lo "zen" di Python ( import this ) dice:

Namespaces are one honking great idea -- let's do more of those!

Mi terrei con quello nel contesto del codice Python. Lo trovo anche logicamente migliore rispetto all'utilizzo di nomi con prefisso. Nomi prefissati per indicare che ricorda cose come l'uso di due elenchi affiancati per agire come una mappa in lingue che non li supportano ..

    
risposta data 27.06.2011 - 18:53
fonte
0

L'uso dei prefissi può essere più facile all'inizio, ma alla fine diventa complicato. È meglio abituarsi agli spazi dei nomi, alcuni linguaggi di programmazione consentono che l'alias dei nomi sostituisca spazi di nomi lunghi e multilivello per un singolo identificatore nell'applicazione.

A meno che il tuo linguaggio di programmazione non lo supporti, ti consiglio, per abituarti ai namespace.

Non ho lavorato con QT, ma forse ha un modo di utilizzare sia gli identificativi prefisso che namespace.

    
risposta data 27.06.2011 - 19:14
fonte

Leggi altre domande sui tag