storyboards-ios

4 razones por las cuales no deberías usar Storyboards

Storyboards

Hace unos días, mientras impartía un curso de programación para iPhone y iPad en Barcelona, uno de los alumnos de las primeras filas preguntó qué eran los Storyboards y por qué no se iban a ver. Antes de que pudiera contestar, una voz desde la última fila gritó: ¡una mariconada!

lobo-con-piel-de-cordero

Bajo una falsa apariencia de facilidad de uso, se esconde…

Me ha encantado el espíritu minimalista y la capacidad de síntesis del «padawan» en cuestión, pero lo cierto es que no estoy de acuerdo.  Que conste que no tengo nada contra las mariconadas, al fin y al cabo ARC es considerado una mariconada por muchos (¡herejes!), y sin embargo es lo mejor que nos ha pasado a los desarrolladores de Objective C en muchos años.

No, los storyboards no son una mariconada sino un lobo en piel de cordero.

Ventajas de los Storyboards

A primera vista, parecen un gran añadido a Xcode que facilita el acceso a los novatos. Además resultan una alternativa a programas como Balsamiq Mockup para mostrar a un cliente el flujo de la aplicación, o incluso para uno mismo. Otras ventajas podrían ser:

  1. Eliminan la necesidad de cierto código sencillo de tu programa
  2. Crear tablas con contenido estático es mucho más rápido
  3. Son muy bonitos.

Razones por las que no conviene usar los Storyboards

Sin embargo, no es oro todo lo que reluce y los storyboards tienen serias desventajas para el desarrollador experimentado y más aun para el novato. En el libro «iOS Programming, The Big Nerd Ranch», los autores tampoco parecen ser grandes fans del invento. Citan varios motivos por los cuales no los recomiendan y no los usan en sus propios desarrollos:

  1. Dificultan el trabajo en equipo. Sin los storyboards, cada desarrollador puede encargarse de un MVC (por ejemplo) sin interferir con los demás. Con Storyboards, todos tienen que estar trabajando con un mismo fichero de storyboard, lo cual fácilmente puede terminar en un caos.
  2. Si usas algún sistema de control de versiones, el hecho de que todos estén usando el mismo fichero a la vez, va a crear conflictos que tendrán que ser resueltos manualmente (si no usas control de versiones, tienes problemas más graves que los Storyboards).
  3. Los Storyboards sacrifican la flexibilidad y el control, por una falsa sensación de facilidad de uso. Cuando se tiene que hacer algo no trivial, el Storyboard es más una tapia que un trampolín.
En resumidas cuentas, los Storyboards llevan a extremos la programación en Objective C:
Lo que ya era fácil se convierte en muy fácil, lo que era normal se convierte en difícil y lo que era difícil se convierte en imposible.

El verdadero problema de los Storyboards

patronus-señal-de-peligro

Peligro, magia

Sin embargo, hay una cuarta razón razón por la cual los Storyboard son una mala idea, especialmente para el desarrollador novato: sustituyen código por «magia».

Al contrario de la «magia», el código es visible , inspeccionable y si bien escrito, fácilmente inteligible. Los xib tienen algo de este defecto, y no hay más que ver la cara de un «padawan» cuando tras cambiar el nombre de una IBAction el compilador le escupe un error de que la clase tal o cual no es KVC compliant for key «XYZ».

Si no tiene a alguien con más experiencia a mano, a menudo no sabe resolver el problema. Ya puede buscar todo lo quiera en su código que no encontrará jamás el error ni la tal clave «XYZ», sencillamente por que no está en el código. El error está en un fichero xib cuyo contenido no es buscado por Xcode: la «magia» no se ve.

En el caso de los xibs, lo que aportan compensa estos inconvenientes, pero a los Storyboards (que aumentan la cantidad de código convertido en «magia») no les salen las cuentas.

Conclusión

Ni yo, ni nadie más en el Big Nerd Ranch usa storyboards en sus desarrollos. Yo no  los enseño a los novatos a no ser que me lo pidan explicitamente y no recomiendo su uso. Si estás empezando y quieres usar Storyboards, al menos pilla un poco de experiencia previa antes de probarlos. Eso sí, luego no digas que no te he avisado. 😉

Acerca de Fernando Rodriguez

Fundador & Editor Jefe de justcodeit, Fernando Rodríguez (@frr149 & Linkedin) es desarrollador & un experto en la enseñanza de máxima calidad en programación y desarrollo para dispositivos iOS, Cocoa Touch, Objective C, Swift, Python, entre otros, aunque su mejor carta de presentación, es la opinión de sus alumnos: http://keepcoding.io/es/testimonio/ CLO en KeepCoding & Arunovo. Instructor de iOS Avanzado del Big Nerd Ranch. Profesor Asociado de la U-tad, autor invitado de revistas como iPhoneWorld, Applesfera.com & ponente habitual en conferencias dentro y fuera de España (iOSDevUK, CodeMotion, BCNDevCon, etc). En sus vidas anteriores fue un nerd de Python y Django, mago de Smalltalk, y para su pesar, galeote de C++ y un gran cocinero.

Share this:

Leave a comment