2010-05-26 14 views
5

So che le costanti iniziano con il prefisso , ma qualcuno ha il proprio prefisso costante, in modo che possano facilmente ottenere il completamento sulle proprie costanti, anziché su Apple?Esistono convenzioni di denominazione utili per * la * costante/variabile statica in Cocoa?

Io uso un prefisso di tre lettere per le mie classi a causa del nome della mia società, facciamo finta che sia OMG. Ho provato a prefisso le mie costanti con omgkConstantName ma non è molto soddisfacente. Stavo anche giocando con kk o ok (lo o è dell'OMG.) O forse dovrei fare kOMGConstantName, che sembra più Cocoa-ish?

Sembra davvero utile per ottenere rapidamente le proprie costanti, allo stesso modo in cui si potrebbe voler raggiungere le proprie classi. Qualcuno lo fa? E 'terribile stile Cocoa?

Inoltre, esiste una buona convenzione di denominazione per le variabili statiche utilizzate solo in una classe, come le chiavi per un dizionario JSON? Dovrebbero avere il ? Dovrebbero iniziare in maiuscolo o seguono le normali convenzioni dei casi?

// Static Variables 
static NSString *searchTextKey = @"searchText"; 
static NSString *searchResultsKey = @"searchResults"; 
(more) 

risposta

6

provo a utilizzare costantemente kJAFoo (o kXXFoo dove XX è un prefisso di progetto) per le mie costanti pubblici - in particolare effettivi const s che vengono esportati i simboli - ma in genere utilizzano kFoo per enumerazioni o static const s all'interno di un file di implementazione. Allo stesso modo, io uso sFoo per variabili statiche e gJAFoo nei rari casi in cui utilizzo globali esportati.

Nessuno di questi casi è importante quanto le classi di namespace (e i metodi in categorie sulle classi importate), tuttavia, poiché la maggior parte dei conflitti emergerà in fase di compilazione o di collegamento piuttosto che in fase di esecuzione.

+0

Questo è più o meno come lo faccio. È soggettivo però. – zekel

+1

Oh questo è molto chiaro e logico. ** k ** per 'const', ** g ** per' extern' e ** s ** per 'static'. * Collegamento esterno * con il codice a 2 o 3 lettere. Apple dice anche che dovresti usare il * nome completo della classe * in variabili collegate esterne (* g * e * k *) anziché solo il codice della lettera. – Binarian

+0

Cosa fare con ** const statico **? Aggiungi solo ** k * e quindi * Pascal Case * ... 'kPoints' – Binarian

2

Generalmente faccio costanti Pascal.

Se si sceglie di seguire la "convenzione namespacing" di inserire un prefisso su tutto, si utilizzerà anche quello.

Così mi piacerebbe fare normalmente

static NSString *SearchTextKey = @"searchText"; 

si può scegliere di namespace, però, che ha voluto che sia (supponendo che il prefisso è ZK)

static NSString *ZKSearchTextKey = @"searchText"; 

In generale ho solo cose che namespace sono utilizzati in più progetti, seguendo la raccomandazione di google (o almeno lo era quando mi stavo sistemando sulla mia convenzione di denominazione).

La cosa più importante è che qualsiasi convenzione si stabilisca. Attenersi ad esso ed essere coerenti (almeno all'interno di un determinato progetto). A un certo punto secondo indovinare te stesso sta andando a perdere tempo.

+0

Sicuramente concordare sulla coerenza.Sto appena iniziando un nuovo progetto multi-Xcode-project e ho l'opportunità di impostare la convenzione di stile. Penso di essere incline a 'kOMG' come prefisso. Mi piace essere in grado di distinguere tra costanti e classi. – zekel

1

Di solito seguo lo stesso prefisso/convenzione di maiuscole come classi, quindi dove Cocoa ha NSTouchPhaseBegan Io potrei avere GLTuneNameKey.

6

Apple Coding Guidelines for Cocoa consiglia di utilizzare le stesse convenzioni di denominazione per le enumerazioni come per le funzioni. Seguendo questo consiglio, OMGConstantName sarebbe corretto.

Problemi correlati