2009-06-20 6 views
10

Objective-C no tiene espacios de nombres, y muchos (como CocoaDevCentral's Cocoa Style Guide) recomiendan el prefijo de los nombres de clase con las iniciales para evitar la colisión del espacio de nombres.¿Las colisiones del espacio de nombres son realmente un problema en Objective-C?

Citando el enlace anterior:

de Objective-C no tiene espacios de nombres, por lo anteponga a los nombres de las clases con iniciales. Esto evita el "espacio de nombres colisión", que es una situación donde dos pedazos de código tienen el mismo nombre pero hacen cosas diferentes.

Eso tiene sentido, supongo. Pero, sinceramente, en el contexto de una aplicación relativamente pequeña (por ejemplo, un juego de iPhone), ¿es esto realmente un problema? ¿De verdad debería cambiar el nombre de MyViewController a ZPViewController? Si no, ¿en qué punto las colisiones del espacio de nombres realmente se convierten en una preocupación?

+0

"Objective-C no tiene espacios de nombres, así que prefija los nombres de la clase con las iniciales". Wow, qué formidable curita. Me encantaría entrar en Objective-C, pero la falta de espacios de nombres es absolutamente tonta. –

+1

@Nick Desde que escribí esto hace casi dos años, publiqué cinco aplicaciones en la tienda de aplicaciones, y nunca tuve este problema.La falta de espacios de nombres realmente no parece ser un problema, al menos no ha sido para mí (las respuestas a continuación también respaldan eso). – zpasternack

+0

Digamos que tienes una clase que choca con otra, ¿hay alguna forma de elegir cuál quieres, o estás obligado a volver y renombrar? –

Respuesta

20

Si estás escribiendo una aplicación que utiliza un conjunto de bibliotecas, entonces usted ya sabe cuál es su espacio de nombres Aspecto del producto y sólo tiene que seleccionar los nombres que no entren en conflicto con las funciones disponibles existentes.

Sin embargo, si está escribiendo una biblioteca para el uso de otros, entonces debe elegir un prefijo razonablemente único para tratar de evitar colisiones de nombres con otras bibliotecas. Con solo dos caracteres todavía puede haber colisiones de nombres, pero la frecuencia se reducirá.

+0

"Los prefijos de dos letras como estos están reservados por Apple para su uso en clases marco." –

2

Las aplicaciones pequeñas no deberían agotar todos los nombres buenos, por lo que no tendrán problemas con los espacios de nombres.

pero es una buena idea para acostumbrarse al estilo que las lenguas son generalmente escritos en. Esto hace que sea más fácil de leer el código de otras personas, y para que otros puedan leer el suyo.

E. g., Utilizar variables camelCase en Java, pero CamelCase vars en C#, hyphen_separated_names en C, etc.

Esto hará que sea más fácil para que usted pueda aprender en el largo plazo.

0

He leído (pero no he verificado) que Apple tiene clases particulares en sus marcos que no incluyen ningún prefijos en los nombres. Entonces, si los nombres de sus clases de aplicación no tienen prefijos, corre el riesgo de colisionar con ellos.

0

He trabajado con repositorios donde las clases no tenían prefijo. (O sólo algunas de las clases fueron prefijo.)

Una cosa que he encontrado es dolorosa a veces es difícil saber si el código fue escrito por alguien dentro o fuera de la compañía. Usar un prefijo consistente lo hace inmediatamente obvio para alguien que lee el código por primera vez.

Tenga en cuenta que el código se leerá muchas más veces que las escritas.

Además, definitivamente puede ser útil cuando se utilizan herramientas como grep y sed.

Cuestiones relacionadas