2011-03-25 8 views
8

He estado haciendo un montón de desarrollo de iPhone últimamente, y tengo un problema de nombres para los que no puedo pensar en una buena solución. El problema es que a veces tengo que referirme a "iOS" en nombres de variable, espacio de nombres o clase. ¿Cómo debería hacerlo? Supongamos que tengo una versión de "MyClass" diseñada para iOS. ¿Debo llamarlo:¿Cómo nombrar los elementos relacionados con iOS en el código?

iOSMyClass?

Esto es malo. Se supone que los nombres de clase comienzan con una letra mayúscula.

IOSMyClass?

Esto es malo. Ahora mi clase parece una interfaz.

AppleMyClass?

Esto es mejor, pero ¿y si creo una versión de la clase para Macs?

AppleMobileMyClass?

Esto es mejor, pero está empezando a ser bastante detallado.

¿Alguna idea? Estoy desarrollando software de escritorio usando C#.

Respuesta

7

Sugerir ir con su segunda opción, pero un ligero mod: IosMyClass. Considere la convención de acrónimos de 3 letras con cassettes Pascal (es decir, MVC en System.Web.Mvc). Por supuesto, Apple cambia eso en su implementación con iOS. Sin embargo, parece que esto es para el espacio .NET, y el deseo es seguir sus convenciones.

Hay puñados de otras clases (in the .NET Framework even), que comienzan con la letra I. Es cierto que no es ideal, ya que está muy cerca de la convención de interfaces de prefijación con I. Sin embargo, las interfaces comienzan con dos letras mayúsculas (I [A-Z]). Eso los identifica como una interfaz. Por lo tanto, IosMyClass, por convención, no es una interfaz, pero IIosFoo sería.

+0

Interesante. De hecho, hay numerosas clases .NET que comienzan con 'I', y se ve perfectamente natural. "Ios" por otro lado se ve raro, pero creo que esta es la mejor idea que he visto hasta ahora. –

4

Sé que especifica C# como su idioma aquí, pero pensé que debería señalar las convenciones de nomenclatura estándar de Objective-C, que verá al mirar otros códigos de iOS.

Objective-C carece del concepto de espacios de nombres, por lo que es generally recommended que prefija los nombres de clase con 2-3 letras mayúsculas que significan su empresa o marco para evitar el nombramiento de colisiones. Apple ha estado recomendando 3 personajes últimamente, porque los marcos como Core Plot que usan 2 letras han comenzado a tener colisiones con clases privadas en los marcos de Apple (como CPImage, en este caso). Para obtener más información sobre las pautas de nombres, see here.

Por esa razón, recomendaría que no se use un prefijo genérico iOS, porque Apple podría usarlo internamente para algo y hacer que se rompa tu aplicación. Es cierto que no sé cómo las clases de MonoTouch C# interactúan con las clases de framework de Cocoa, pero me gustaría evitar cualquier posibilidad de que surja un problema como este.

Una vez más, si puedo apuntar al marco de Trazado central, hay algún código dentro de ese marco que es específico para Mac y otro para iOS, sin embargo, no se usan clases separadas para cada plataforma. Los métodos específicos de plataforma se extraen de los principales archivos de clase y se colocan en categorías. Estas categorías tienen el mismo nombre, pero el objetivo de Mac se compila utilizando un archivo y el destino de iOS usa otro.Del mismo modo, las clases completas que son específicas de cada plataforma reciben el mismo nombre e interfaz, pero se colocan en diferentes archivos. El archivo que se utiliza en la compilación viene determinado por el objetivo de la plataforma.

Por lo tanto, recomendaría no dar un nombre único a las clases específicas de iOS a menos que no tengan un análogo en sus otras plataformas de destino.

Cuestiones relacionadas