2012-01-31 9 views
8

Soy nuevo en el desarrollo de iOS y estoy haciendo todo lo posible para aprender la "mejor" manera de hacer las cosas. (Sí, sé que es un término relativo)iOS ¿Patrón de diseño equivalente cuando proviene de un mundo C#/Java?

Vengo de un mundo de C# y Java donde hacemos cosas como inyectar dependencias a través de un contenedor IOC, usar un patrón de repositorio para acceder a datos abstractos, usar servicios de dominio y objetos para encapsular los datos y el comportamiento de la empresa, etc. Estas son las cosas que aún tengo que ver en el desarrollo de iOS. (Tal vez estoy buscando en los lugares equivocados)

Me doy cuenta de que Objective-C es un superconjunto de C y un lenguaje dinámico/poco definido que probablemente cambie el juego bastante cuando se trata de buenas prácticas de diseño . ¿Alguien puede señalarme en las direcciones de algunos libros/blogs/otros que me podrían ayudar a dar este salto mental desde un entorno fuertemente tipado y manejado a este nuevo mundo mientras mantengo mis diseños flexibles y respetando los principios SÓLIDOS?

EDITAR - Quiero ser claro aquí. No estoy preguntando cómo aprender el marco de trabajo de Cocoa y los detalles de Objective-C como un lenguaje. He encontrado muchos recursos sobre eso. Estoy buscando llevar esto al siguiente nivel, comenzar a hacer TDD y asegurarme de que los proyectos que estoy construyendo serán fáciles de extender y mantener.

+1

Algunos de nosotros entramos en el desarrollo de iOS para alejarnos de todo ese sinsentido empresarial. :) –

+2

@robmayoff Este tipo de cosas pueden ser exageradas, pero "sin sentido" es un poco duro. Definitivamente no queremos volver a los días del SQL integrado en todas partes, por lo que buscamos un equilibrio. De acuerdo con un enfoque equilibrado, ¿qué cosas puedes hacer para mejorar tus diseños en iOS? –

+0

Creo que, como dice Adam, deberías comenzar mirando las API de Apple. Sus API son simples, mínimas y muy consistentes. Por ejemplo, para representar colecciones, Cocoa tiene tres clases: 'NSArray',' NSSet', y 'NSDictionary'. Compare eso con lo que ofrecen Java y algunos otros lenguajes como parte de libs estándar. También revise las charlas de la WWDC tituladas "Escritura fácil de cambiar de código", y "API Design for Cocoa and Cocoa Touch" de 2011 y 2010, respectivamente. – Anurag

Respuesta

4

La mejor manera de aprender la "mejor" manera de hacer las cosas es obtener una comprensión lo más profunda posible de cómo se diseñan las API existentes de Apple. Después de todo, independientemente de cuál sea la mejor forma teórica de hacer algo, al final tu código tendrá que funcionar con estas API, por lo que tiene sentido que sigas patrones similares en la mayoría de los casos.

En cuanto a los libros, hay uno llamado Cocoa Design Patterns que cubre este tema exacto y, según la reseña de Amazon, parece ser bien recibido.

+0

Buena recomendación. – JoePasq

+0

No estoy seguro de que esto llene todas las lagunas para mí, pero parece ser un excelente libro que me llevará bastante lejos en ese camino. Gracias. –

1

Te recomiendo que sigas el curso cs193p y leas Learning Objective-C desde el sitio web de Apple.

Creo que estos dos enlaces lo guiarán en la dirección correcta sobre cómo deberían funcionar las cosas en iOS.

1

Hay un montón de patrones de diseño específicos para el desarrollo de Objective-C y Cocoa, encontrará un resumen muy bueno en this book. Cubre los patrones incorporados en el lenguaje, así como algunos patrones más complicados y de alto nivel (arquitectura si lo desea).

En general, los principios SÓLIDOS se aplican y no son menos relevantes en un lenguaje dinámico, ya que están fuertemente tipados. La otra cosa es que en Objective-C tienes la opción de usar tipos fuertes en tu diseño, así que prácticamente todos los patrones OOP "clásicos" se aplican, aunque puede haber algunas construcciones de framework/lenguaje más elegantes y adecuadas para el trabajo.