Tengo un amigo que tiene un poco más de experiencia en programación que yo. Estábamos hablando de todas las diferentes tecnologías de programación que usamos y Interface Builder surgió en la conversación.
Al no tener experiencia en programación, excepto por lo que he enseñado yo mismo, personalmente creo que el IB y todas sus características ( IBOutlets
, IBActions
) ayudan a los codificadores de mi nivel de habilidad (y todos los niveles de habilidad, para el caso) a completar sus proyectos en menos tiempo.
Su visión del IB es un poco entusiasta. Él cree que los codificadores que utilizan Interface Builder están "haciendo trampa" en el hecho de que no tienen que diseñar interfaces a mano.
Pregunta:
¿Debería considerarse un "truco" el uso de un generador de GUI para diseñar elementos de interfaz (dado que la mayoría de la programación originalmente requería el diseño de interfaces manualmente)? ¿Por qué?
fuente
Respuestas:
No es trampa. Programas como el IB son herramientas. Use el correcto para el trabajo. No hay necesidad de ser dogmático al respecto.
Si eres más efectivo usando una herramienta así, úsala. La única advertencia es que debe aprender las compensaciones al tomar sus decisiones. Hacer diseños a mano le brinda un control preciso a expensas de la facilidad de arrastrar y soltar. Las herramientas de arrastrar y soltar le permiten hacer muchas cosas de manera rápida y fácil, pero pueden hacer que su código sea más difícil de mantener con el tiempo.
Personalmente, nunca tuve éxito ni obtuve mucho placer al usar una herramienta de diseño de interfaz de usuario de arrastrar y soltar, pero solo soy yo. Considero que el diseño de GUI a mano es lo más efectivo para mí y proporciona una base de código que es más fácil de mantener con el tiempo. Otros tienen la experiencia opuesta.
fuente
La programación como trabajo no es un deporte ni un juego. Entonces el argumento de la trampa es muy débil. Si las herramientas visuales aumentan su productividad, sería estúpido no utilizarlas. Mi experiencia es que esto me permite pasar más tiempo en el código de resolución de problemas real sin hacer cosas triviales de la interfaz una y otra vez.
Sin embargo, tenga cuidado, es fácil que la configuración o los datos ingresen a la interfaz. Sea radical acerca de mantener la presentación y la lógica separadas.
fuente
Solo es trampa si estás sacrificando algo para llegar allí. La mayoría de los diseños de la GUI solo generan código que de todos modos harías (y a menudo tienes que editarlo a mano ya que el diseño no es suficiente).
Básicamente, no.
En igualdad de condiciones, cualquier herramienta que te permita hacer lo mismo más rápido es buena.
fuente
Hacer trampa es el nombre del juego. Siempre debe tomar la ruta más fácil que pueda al tomar cualquier tipo de decisión de desarrollo. Llámalo trampa, llámalo "ser productivo"; no hace ninguna diferencia. Debe elegir la herramienta que lo ayude a realizar el trabajo con la menor cantidad de esfuerzo (por supuesto, no se olvide del mantenimiento y la escalabilidad).
Ahora, específicamente con IB, debe sopesar el tiempo ahorrado por IB frente al costo de tener que mantener un código más descuidado y con el que esté menos familiarizado. Esta es realmente una decisión caso por caso y persona por persona. En muchos casos, las herramientas y los asistentes le permiten realizar mucho más trabajo con un bajo costo de mantenimiento adicional ... y, a veces, introducen código descuidado y abstracción más permeable de lo que sabe qué hacer. Parece que ha tomado la decisión por usted mismo de que el IB vale los costos que agrega al desarrollo, sin embargo, su amigo podría encontrar fácilmente que la herramienta lo obstaculiza más de lo que ayuda.
fuente
Diablos no. Sin embargo, hacerlo completamente a mano es un caso claro de hacer un trabajo innecesario para usted.
(En general, lo diseñaría con un generador y si se necesita algún ajuste fino, tiende a hacerlo, pero no siempre) a mano.
fuente
Ciertamente no es trampa, aunque tendría un poco menos de respeto por un desarrollador que no podría diseñar una GUI sin una. En mi opinión, usar uno no es diferente de usar un tipo de datos proporcionado por el sistema: ¿por qué implementar su propia lista vinculada o mapa hash si puede usar uno de la biblioteca del sistema?
FWIW Tuve que implementar una interfaz de usuario en Java Swing hace un par de meses. Nunca lo había usado, así que lo escribí todo a mano para poder entender mejor cómo funcionaba. Ahora que conozco la API básica, ¡nunca volveré a escribir una a mano si puedo evitarla!
fuente
Como dice @Bryan Oakley , es solo una herramienta y no un "truco". Todo depende de lo que expongas exactamente. Si a mano lo convierte en un ejercicio increíblemente laborioso, entonces debería buscar otras alternativas que lo hagan más productivo.
Solía estar en el campo de la codificación manual de la interfaz, pero más tarde, después de un diseño de interfaces, llevé una flecha hacia la rodilla y tuve una opinión diferente. Si puedo y me hace más productivo, usaría una herramienta gráfica para diseñar la GUI.
Últimamente usando el patrón MVVM, con la distinción de View y ViewModel, deja un poco más claro cuándo usaría herramientas gráficas. Phil Haack analiza esto brevemente en el episodio de Github para Windows del podcast Herding Code cuando se le pregunta sobre la transición de la web al desarrollo de aplicaciones. Tiene más sentido hacer el ViewModel con la codificación "a mano", y dejar que el diseñador construya la Vista gráficamente (y conecte los ViewModels en consecuencia).
fuente
Una de las grandes ventajas de herramientas como Interface Builder es que permiten separar el trabajo de diseño de la interfaz de usuario de la implementación del programa. Alguien con habilidades mínimas de codificación puede cambiar fácilmente el diseño de la interfaz de usuario, cambiar los botones y los subtítulos del menú, traducir la interfaz de usuario a un idioma diferente, etc.
fuente