Cuando hablaba con una amiga que no era programadora, mencioné el concepto de "código hermoso" y ella quería entender lo que eso significaba, pero no sabía cómo explicarlo a alguien que no tendría contexto en absoluto.
Cuando todo el código parece galimatías para alguien de todos modos, ¿cómo puede explicar qué hace que una pieza de código sea más bonita que otra? Las analogías también podrían ser útiles.
aesthetics
Daniel Vandersluis
fuente
fuente
Respuestas:
Analogía del lenguaje
Piensa en tu historia más favorita. Probablemente esté bellamente escrito. Para un hablante que no habla inglés, solo porque no pueden entenderlo o comprender por qué es hermoso no le resta valor a su belleza.
Analogía de construcción
Considere una casa mal construida. Tiene puertas y ventanas que obviamente están tapiadas. El mortero está agrietado en una esquina donde la base era insuficiente. Y nadie puede entender por qué hay una escalera que conduce a un segundo piso que no existe. El inodoro está construido al lado de la cocina sin ventilador de extracción y está situado de tal manera que los vientos dominantes soplarán los malos olores del pantano en el resto de la casa. La chimenea de la chimenea abierta está a 5 cm de un poco de madera, lista para prenderse fuego.
Compare que con una casa donde todo está donde debería estar, es de bajo mantenimiento, está perfectamente aislado para que un poco de calor solar lo mantenga caliente en invierno, la energía se recupera de la ventilación, por lo que tiene aire fresco y una temperatura confortable. y facturas de energía insignificantes. Está construido con materiales no inflamables para que no se queme con el fuego. Soportará un terremoto de 9.0 y un tornado F5. La construcción solo cuesta un 30% más que la otra casa, pero pagará la diferencia en 5 años. Y es estéticamente agradable.
La GUI es como la apariencia externa de una casa. Un usuario puede reconocer la belleza en una GUI, al igual que puede apreciar una hermosa casa. Pero quizás aún más importante, la verdadera belleza en el diseño tanto en las casas como en los programas son las cosas que son invisibles para los no iniciados, pero importantes o agradables de tener independientemente.
fuente
Piensa en un auto.
La mayoría de nosotros miramos el auto y solo podemos ver el cuerpo. Si alguien repara algunas abolladuras y pone un nuevo trabajo de pintura en el automóvil, se verá mucho más hermoso. Básicamente es el mismo auto, pero eso es todo lo que vemos.
Un mecánico abre el auto y mira el motor. Ven lo bueno que es ese motor. Ven que todo está organizado para que sea fácil llegar a él, mantenerlo y trabajar en él. Ven las piezas y saben lo bien diseñado que estaba. Para un mecánico experimentado, el motor de un automóvil de alta calidad bien mantenido se convierte en algo bello. No pueden explicarle qué lo hace hermoso, pero es probable que su noción de belleza se traduzca en menores costos de mantenimiento, una mayor vida útil del automóvil y un mejor rendimiento. Todo esto aumenta el valor de ese automóvil, a pesar de que no se puede ver.
Cuando miras un sitio web o una aplicación, lo estás viendo como la mayoría de nosotros vemos autos. Cuando miro el código, lo veo como el mecánico mira el motor del automóvil. Nunca puedes experimentar la belleza de ese código como lo hago yo, es literalmente invisible para ti. Pero esa belleza es importante al igual que la belleza del mecánico. Determina qué tan bien se ejecuta ese software, qué tipo de problemas tendrá, con qué facilidad se puede mejorar el software, etc. Todo esto aumenta el valor de ese software, a pesar de que no puede verlo.
fuente
Se requiere todo el código presente, y ninguno de ellos requiere explicación.
fuente
Me referiría a la poesía:
Un poema bien escrito tiene una sensación diferente que un extracto de un manual mal traducido sobre el mismo tema.
fuente
Los problemas de codificación son acerca de la conceptualización, por lo que un código hermoso representa una conceptualización notable del problema.
Por ejemplo, nos gusta cuando un problema puede reducirse a un problema resuelto existente, dando una idea de la naturaleza del problema en sí .
A veces, una reconceptualización del problema puede hacer que parezca tan fácil; Hablamos de soluciones elegantes que requieren trucos simples que simplifican una tarea difícil.
Para mí, el Quicksort es un hermoso ejemplo: elija un elemento aleatorio de una matriz y luego compare todos los demás elementos de la matriz; si el número es menor, póngalo en la pila A; si el número es mayor que él, póngalo en la pila B. Ahora, por la desigualdad del triángulo, ningún elemento en la pila A tendrá que compararse con ningún elemento en la pila B. Vuelva a aparecer en A y B, y ya está .
fuente
Me recuerda a esto:
Fuente: XKCD - LISP
fuente
Ningún código no trivial puede ser perfecto porque el código perfecto requiere simultáneamente objetivos satisfactorios que a menudo entran en conflicto. Un código hermoso, por lo tanto, equilibra todos los atributos importantes perfectamente para la tarea en cuestión y se acerca más a satisfacerlos simultáneamente de lo que la mayoría pensaría posible. En ningún orden en particular:
fuente
Las pinturas de Jackson Pollock son un ejemplo de algo hermoso para algunos y galimatías para otros.
fuente
Si la persona conoce bien las matemáticas, me gusta comparar códigos hermosos con una solución elegante a un problema.
fuente
Algunos aspectos del buen código son:
fuente
Para mí, los idiomas son mis herramientas.
Y como cualquier artesano, prefiero que mis herramientas estén en perfecto estado.
Cuanto mejor sea la condición del código, en cuanto a claridad de concepto, facilidad de mantenimiento y legibilidad. Cuanto mejor sea el código.
Entonces, para mí, leer código bien escrito es como abrir una caja de herramientas con herramientas bien diseñadas.
He usado esta analogía un par de veces con éxito. Especialmente las personas con antecedentes más prácticos o artísticos parecen entender el concepto de código limpio / hermoso de esta manera.
fuente
Creo que depende de lo que quieras decir con código hermoso.
Para mí, el código es hermoso cuando es legible. Además de posibles problemas con los conceptos de programación, un lego podía leer y, al menos a un alto nivel, entender lo que estaba haciendo el código.
Como se ha discutido en otras respuestas, el código también puede ser hermoso en el sentido de que logra una funcionalidad compleja combinando un par de conceptos simples. No estoy seguro de qué tipo de analogía sería mejor explicarle a un no programador, depende del lego. Los juguetes de rompecabezas vienen a la mente, como el NeoCube .
fuente
En mi humilde y personal opinión, un código hermoso es como un buen libro de novelas:
fuente
Es como una empresa magra, donde todos conocen su papel, es fácil descubrir quién es bueno en qué y no hay duplicación de esfuerzos.
Vs.
Office Space, donde se defiende la mediocridad, tres gerentes no tienen nada mejor que hacer que molestarlos con los informes de TPS, ¡la máquina de fax! @ # $ Ing NUNCA FUNCIONA! y un empleado determinado solo puede obtener unos 15 minutos de trabajo real realizado a la semana. Es posible que un empleado ni siquiera trabaje técnicamente allí porque alguien olvidó despedirlo (es difícil saberlo realmente porque nadie trabaja de manera eficiente y es difícil evaluar lo que está tratando de lograr). Y para hacer algo práctico requiere navegar por un sistema absurdamente excesivamente complicado sobre el cual alguien leyó y pensó que se vería ordenado en su currículum, aunque en realidad no resuelva un problema que tenían.
fuente
No hay un "código hermoso", hay "algoritmos elegantes" y "diseños elegantes". El diseño puede ser entendido por no programadores.
Odio a los programadores que discuten sobre el "código hermoso", porque de una forma u otra, realmente no saben cómo un intérprete o un compilador lo digerirán y qué hará la máquina, por lo que es más como un niño que le muestra a su madre cómo maravillosa es su historia, pero en realidad no lo es.
fuente
¿Le explica a la gente por qué una buena foto es buena? No. Les muestras la imagen (porque, ya sabes, una imagen dice más de 1000 palabras). Entonces, lo mejor es mostrarles un pequeño código que es realmente elegante, hermoso, perfecto (y tal vez, en comparación, cómo Joe Average lo habría codificado).
fuente