2011-08-11 10 views
15

Vengo del mundo java, donde los archivos/clases deben ser estructurados bien estructurados dentro de los paquetes/carpetas a mi entender.¿Existe una "mejor práctica" para la organización en Xcode 4?

¿Cuál es la mejor práctica en Xcode4? No he podido encontrar una guía de Apple para esto todavía. Si alguien puede llevarme al documento correcto, estaría feliz.

En caso de que no haya ningún documento: ¿cuál es la mejor manera de hacerlo? Me parece un poco extraño tener todas las clases en una carpeta de proyecto, ya sea dentro de la vista Xcode o la estructura del archivo (curiosamente, la estructura del archivo no parece ser igual a la estructura visual en Xcode). Por supuesto, el proyecto estará en control de versiones (en GitHub).

¡Muchas gracias de antemano!

+4

a la derecha, el navegador de proyecto en Xcode 4 no es la estructura de archivo real. Creo que la idea es que organices tus archivos como quieras en el navegador del proyecto y que Xcode se preocupe por el sistema de archivos real. La forma en que hace referencia a los archivos en el código siempre es simplemente usar el nombre de archivo sin ninguna ruta del sistema de archivos. Supongo que el compilador aplana la estructura en tiempo de compilación o algo así. En cuanto a las mejores prácticas ... No estoy seguro de si hay alguna guía para desarrolladores de Apple. Nunca los he visto, ve con lo que es mejor para tu proyecto. – mattacular

+0

¡Gracias a Moshe especialmente por editar el tema, y ​​también a todos los demás por sus excelentes respuestas! Muy, muy útil. Parece que Xcode funciona como iTunes cuando se trabaja con archivos: los archivos pueden estar en cualquier parte del disco, pero puede organizarlos de la manera que desee en Xcode. – brainray

+0

Además, intente y resista la tentación de dejar el código en blanco con C# ifdef para evitar la refactorización de módulos o proyectos de código. Cuanto más complejo sea el código, más probable es que alguien se tropiece con él y rompa algo más ... especialmente bajo presión de tiempo con muchas distracciones. –

Respuesta

9

Antes que nada, me gustaría tener categorías de controladores de incendio y clases relacionadas agrupadas. Pero no solo en grupos creados en XCode, también en carpetas reales. Por lo tanto, al crear un grupo en lugar de crearlo en XCode, primero lo creó en Finder, luego arrastra esa carpeta a XCode y lo tiene formado en un grupo. Ahora cuando agregue nuevos archivos en ese grupo, también irán a esa carpeta en el disco.

Algunos otros pensamientos al azar:

de nombres: ya que no tiene espacios de nombres, debe anteponer sus clases con un prefijo de dos o de tres letras (Apple recomienda tres). Haga esto aunque parezca extraño al principio.

Recursos: a los proyectos predeterminados les gusta separar los archivos xib de los controladores de vista. En una aplicación de cualquier tamaño, prefiero mantener los controladores de vista y los archivos xib agrupados en una ubicación. Incluso podría hacer imágenes de esta manera, aunque generalmente hay pocas suficientes, es más fácil agruparlas en un solo lugar.

Cosas de la aplicación: me gusta agrupar todos los archivos específicos de aplicaciones diversas (delegado de aplicación, info.plist, archivo pch, main.m, etc.) en un grupo de aplicaciones en la parte superior de la lista para facilitar esos bits encontrar.

+0

Muchas gracias Kendall, muy apreciado. – brainray

+0

Menciona que primero crea un grupo en el Finder y luego en Xcode. ¿Pero cuál es la mejor manera de mover archivos después? Al hacerlo en Finder, se genera una pregunta de "guardar archivo" en la cámara de combustión de Xcode. Si vuelvo a guardar en la carpeta en la que ya coloqué el archivo en el Finder, tengo que sobrescribir el archivo (ya que ya está allí). Esto funciona, pero parece un poco poco elegante. ¿Hay una mejor manera? ¡Gracias de nuevo! – brainray

+0

Normalmente lo elimino de XCode (elimine solo las referencias), muevo los archivos en Finder y luego los arrastro nuevamente a XCode. Es un poco más rápido y evita las preguntas del archivo resave. –

2

No he encontrado ningún do/no es específico cuando se trata de cómo organizas tu proyecto en XCode. Podría estar equivocado, pero creo que las carpetas y los diseños que creas por tu cuenta se eliminan por completo en el momento de la compilación de todos modos.

Por ejemplo, si tiene una imagen anidada en Resources/Images/Background/image.png, solo hace referencia al nombre de archivo .png y no a la estructura de la carpeta.

Tendría que decir que todavía podría organizar su proyecto como mejor le parezca. Pide prestado a algunos de Java y diseña lo que funcione mejor.

7

Antes que nada, eche un vistazo a la estructura del proyecto por defecto. Si bien no es perfecto, hay algunos "Grupos" predeterminados en Xcode. Úselos como una guía general. (Como mencionaste, los grupos no son carpetas del sistema de archivos, aunque cuando importas recursos se te solicita la opción de crear grupos para carpetas.)

Si bien no hay mucha convención oficial con respecto a la estructuración de archivos, hay algunas cosas puede hacer, como yo, para eliminar ese picor organizativo. Realizo algunas subcarpetas en mi directorio de proyecto en mi disco. Éstos son algunos de ellos:

  • audio: archivos de audio también se podrían obtener su propio grupo.

  • Bibliotecas externas: Si estoy importando el código de otras personas, crearé un grupo llamado "bibliotecas" y luego un subgrupo para cada una.

  • Imágenes: Aquí, puede hacer subcarpetas/subgrupos si lo desea. (Uno de los iconos, uno para el menú principal, etc.)

  • objetos gestionados: Cuando uso de Datos Básicos en mis proyectos, a menudo va a generar subclases través de las herramientas de modelado de Xcode. Me gusta mantener esos en un grupo separado y una carpeta separada también.

  • Ver controladores: Dependiendo del proyecto, podría agrupar mis controladores de vista de manera diferente. Por ejemplo, podría mantener a todos mis "editores" y "espectadores" en distintos grupos.

En última instancia, los grupos son para facilitar la gestión de proyectos y las carpetas son para facilitar la administración de archivos. Depende totalmente de ti cómo hacer esto. Como señala Bill Brasky, en el momento de la compilación, ninguno de la organización realmente hace la diferencia.(Si quiere volverse loco, eche un vistazo a la pantalla "Build Phases" en Xcode 4. La fase de copia es un revoltijo de todos sus archivos relevantes.)

1

Es realmente de su agrado. El Organizador no refleja la estructura de archivo real. Al final, los archivos de origen se compilan en un binario y todos los recursos se vuelcan en una carpeta de "Recursos" dentro del paquete para su aplicación. Simplemente extiendo la configuración predeterminada: coloco recursos en la carpeta de recursos, agrupados según sea necesario. En un juego, podría tener grupos para Iconos, Fondos, Sprites, Audio y Otros. Para una aplicación de productividad, es posible que solo tenga Texturas e íconos. Todas las bibliotecas externas y Frameworks entran en el grupo de Frameworks (rara vez me molesto en organizarlos, excepto si alguna biblioteca como Dropbox SDK o GData ya viene en un grupo ordenado. Por lo general, solo es un archivo). En el grupo Fuentes, podría agrupar por vistas funcionales, como Biblioteca de documentos, Vista de edición o Utilidades (para un programa de edición de documentos) o Menú principal y Jugabilidad para un juego. Para un proyecto más pequeño, podría agrupar por Controladores (dividido en Controladores de Vista y Controladores de Modelo si es necesario), Modelos y Vistas. Si vienes de un proyecto Java, no hay nada de malo en mantener tu organización existente; de hecho, de forma predeterminada, cuando agrega a Xcode, creará nuevos grupos según las carpetas del disco.

Todo se aplana en el paquete final de todos modos, y su organización no tiene ningún impacto en el sistema de archivos. Use lo que sea necesario para el proyecto: no use la misma estructura para un clon de Tetris que lo haría para una ... aplicación médica profesional o algo así.

Cuestiones relacionadas