2010-05-26 10 views
5

Sé que las constantes comienzan con el prefijo k, pero ¿alguien tiene su propio prefijo constante, por lo que pueden completar fácilmente sus constantes, en lugar de Apple?¿Existen convenciones de nomenclatura útiles para * su * constante/variable estática en Cocoa?

Utilizo un prefijo de tres letras para mis clases debido al nombre de mi compañía, supongamos que es OMG. Intenté prefijar mis constantes con omgkConstantName pero eso no es muy satisfactorio. También estaba jugando con kk o ok (el o es del OMG.) O tal vez debería hacer kOMGConstantName, que parece más Cocoa-ish?

Parece realmente útil llegar rápidamente a sus propias constantes, de la misma forma en que podría querer llegar a sus propias clases. ¿Alguien hace esto? ¿Es terrible estilo cacao?

Además, ¿existe una buena convención de nomenclatura para las variables estáticas que solo usaría en una clase, como las claves para un diccionario JSON? ¿Deberían tener el k? ¿Deben comenzar en mayúsculas o siguen las convenciones de casos normales?

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

Respuesta

6

intento usar consistentemente kJAFoo (o kXXFoo donde XX es un prefijo del proyecto) para mis constantes públicas - especialmente reales const s que se exportan símbolos - pero por lo general utilizan kFoo para enumeraciones o static const s dentro de un archivo de implementación. Del mismo modo, utilizo sFoo para las variables estáticas y gJAFoo en los raros casos en los que utilizo variables globales exportadas.

Ninguno de estos casos es tan importante como las clases de espaciado de nombres (y métodos en categorías en clases importadas), ya que la mayoría de los tipos de conflictos surgirán en tiempo de compilación o enlace en lugar de tiempo de ejecución.

+0

Esto es más o menos cómo lo hago. Es subjetivo sin embargo. – zekel

+1

Oh, eso suena muy claro y lógico. ** k ** para 'const', ** g ** para' extern' y ** s ** para 'static'. * Enlace externo * con el código de 2 o 3 letras. Apple incluso dice que debe usar el * nombre completo de clase * en variables externas vinculadas (* g * y * k *) en lugar de solo el código de letra. – Binarian

+0

¿Qué hacer con ** static const **? Solo agregue ** k * y luego * Pascal Case * ... 'kPoints' – Binarian

2

Normalmente hago constantes Pascal case.

Si elige seguir la 'convención de espacios de nombres' de poner un prefijo en todo, entonces lo usaría también.

Así que me hace normalmente

static NSString *SearchTextKey = @"searchText"; 

puede optar por espacio de nombres que a pesar de lo cual tendría que ser (asumiendo que su prefijo es ZK)

static NSString *ZKSearchTextKey = @"searchText"; 

En general I único espacio de nombres que se usan en múltiples proyectos, siguiendo la recomendación de google (o al menos lo era cuando me estaba estableciendo mi convención de nombres).

Lo más importante es que sea cual sea la convención que elija. Afénese y sea consecuente (al menos dentro de un proyecto dado). En cierto momento, adivinarse a sí mismo solo va a perder el tiempo.

+0

Definitivamente de acuerdo sobre la coherencia.Estoy comenzando un nuevo proyecto multi-proyecto Xcode y tengo la oportunidad de establecer la convención de estilo. Creo que me inclino por 'kOMG' como el prefijo. Me gusta poder decir entre constantes y clases. – zekel

1

Normalmente sigo la misma convención de prefijos/mayúsculas que en las clases, entonces donde Cocoa tiene NSTouchPhaseBegan podría tener GLTuneNameKey.

6

Apple Coding Guidelines for Cocoa recomienda utilizar las mismas convenciones de nomenclatura para enumeraciones que para funciones. Siguiendo este consejo, OMGConstantName sería correcto.

Cuestiones relacionadas