¿Diseñar una GUI gráficamente debería considerarse "trampa"?

18

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é?

esqew
fuente
32
¿Por qué ladrar cuando puedes comprar un perro para que lo haga por ti?
jfrankcarr
29
Usar una camioneta es hacer trampa. Los hombres de verdad superan y doman a los caballos salvajes en un clima de 120 grados. Se acercan a ellos desde atrás. Obligatorio xkcd.com/378
Trabajo
99
pregúntele a su amigo por qué no considera usar una computadora en lugar de hacer las cosas manualmente como trampa
DPD
2
Parece que tu amigo nunca tuvo un plazo agresivo que cumplir.
MattDavey
15
Teniendo en cuenta que hacer trampa es solo esnobismo del programador.
Alan B

Respuestas:

60

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.

Bryan Oakley
fuente
3
Solo para agregar, las herramientas de diseño son solo generadores de código. Por lo general, generar código es algo bueno, ya que puede generarlo y puede seguir haciendo lo que debe hacer; hacer que la pantalla realmente haga algo útil. Mi experiencia es diferente. Fui mucho más productivo usando las herramientas de diseño que no.
Andy
Como una adición a la nota de Andy, la herramienta de diseño adecuada hace toda la diferencia en el mundo. He usado Delphi / Lazarus para el desarrollo de GUI y fue genial. También se me ha ordenado usar MS Frontpage, y obtienes html horrible en el otro extremo.
Spencer Rathbun
FWIW, usando MFC, uso el editor visual para acercarlo, luego lo ajusto a mano para hacerlo bien. Esa parece ser la forma más rápida para mí.
David Thornley
No tengo ningún problema con el uso de una herramienta especializada para hacer el trabajo más rápido, pero para agregar: mi preferencia es para las herramientas que definen modelos basados ​​en datos, es decir, un diseño de interfaz de usuario en XML, en lugar de generadores de código, eso escriba para usted "Botón btn54 = botón nuevo (x: 543, y: 782);"
Katana314
17

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.

Pieter B
fuente
10

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.

Telastyn
fuente
Estoy firmemente en el campo 'usar las herramientas de diseño disponibles'. Las herramientas ahorran tiempo, aunque el código generado a menudo necesita algunos ajustes. El tipo 'está engañando' suena como alguien que no se ha tomado el tiempo de comprender lo suficientemente bien como para editarlo.
Jim en Texas
4

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.

Morgan Herlocker
fuente
3

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.

Maximus Minimus
fuente
En .Net a partir de la versión 2.0, creo que la GUI y la lógica están separadas gracias a las clases parciales: la misma clase se define en dos archivos diferentes; uno es completamente autogenerado y uno personalizado por usted.
Trabajo
No puedo estar de acuerdo con la afirmación de que es un "caso claro de hacer un trabajo innecesario". Todo depende de la herramienta y la habilidad del programador. Por ejemplo, estoy seguro de que podría codificar una GUI tcl / tk más rápido y con un mejor código final a mano que con cualquier generador de GUI de su elección. OTOH, no hay forma de que considere usar otra cosa que no sea Visual Studio si crea una aplicación de escritorio .net.
Bryan Oakley
Dado que el OP habla claramente sobre el caso general (vea el texto en negrita en la pregunta), no puedo aceptar su desacuerdo con respecto al caso general, aunque sí acepto que los casos especiales pueden existir y existen. Siempre fue así.
Maximus Minimus
3

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!

TMN
fuente
1

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).

Spoike
fuente
1

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.

Mark Bessey
fuente