¿Por qué piensan eso? Porque los programadores * hacen * escriben código obtuso. Cuando aprendí C por primera vez, la compañía que aprendí usó cosas como una función llamada m () para asignar memoria. Eso, como algunas de sus otras cosas, era críptico y con errores. Fue enloquecedor tratar de analizar qué prácticas válidas y razonables y qué no tenía sentido. Venía de un fondo de PL / 1, Fortran, Pascal, Modula 2, variantes BASIC y 6502 y 8086 Assembler. C era algo extraño para mí, pero estaba claro para mí que su código tenía problemas.
Hay una variedad de razones por las cuales los desarrolladores escriben código difícil. Es algo terrible, pero la mayoría de ellos son malos.
El problema que intentan resolver puede ser inherentemente complejo. Existen modismos que, aunque son de aspecto extraño, no presentan dificultad para los expertos en el área.
- Como desarrollador de software, ¿cómo obtengo la misma energía y entusiasmo que una vez tuve durante mi licenciatura?
- ¿Es común que las personas con experiencia en hardware consideren que el desarrollo de software es trivialmente fácil?
- ¿Realmente necesito aprender alemán si me han ofrecido un puesto en una empresa como desarrollador de software en Alemania?
- Alguien desarrolló el software que estaba buscando, estamos en diferentes países, ¿cuál es el mejor enfoque si solo quiero usar / pagar por el software?
- ¿Cómo desarrollan un producto los ingenieros de software?
En algunos casos, hay problemas de rendimiento o recursos que requieren un código bastante brutal para superarlos. Veo muchas travesuras y código de aspecto desagradable en las fuentes de C para cosas como la criptografía. En algunos casos en el pasado he investigado y, de hecho, el código feo superó a los equivalentes más bonitos.
A veces, si el lenguaje está en un nivel superior, el programador sabe que ciertas construcciones son recursos innecesarios y hace un poco de código feo para solucionarlo.
No ‘arreglas’ el código que no está roto. Gran parte del código mundial se escribió hace mucho tiempo cuando sabíamos menos sobre programación que ahora. Todo, desde la CPU hasta el compilador hasta el programador, no era lo que podía ser. Sin embargo, incluso si el código es feo, si funciona (incluso lo suficiente) se deja como está. Alguien tiene que gastar los recursos para escribir código y hacer que el código feo sea bonito es difícil de vender a las personas que pagan las cuentas.
A veces, la cantidad de ‘refactorización’ necesaria para hacer que el código sea más razonable es simplemente demasiado onerosa. Encontrará fragmentos de código que hacen cosas que pertenecen a otro lugar pero que requerirían demasiada alteración de otro código. Esto es particularmente cierto para el código que se encuentra en mantenimiento. Un programador de mantenimiento puede estar atascado escribiendo código tortuoso para evitar un error cuyo síntoma comprende pero cuya causa no comprende. Si un sistema de producción no funciona, no siempre tiene el tiempo para hacer que el código de lote se vea hermoso. Si tiene que hacer funcionar un sistema por la mañana, a veces tiene que poner un código feo en su lugar.
A menudo, a medida que desarrolla el código, hace una especie de ‘fuerza bruta’ para hacer lo que funcione con la intención de volver a refinar más tarde. Los programadores de Journeymen tienden a ser más jóvenes y su memoria de trabajo a corto plazo está en su apogeo. Cuando están inmersos en una tarea y codifican sobre la marcha, pueden hacer cosas como:
if (((a> 2) && (y <a)) || ((a y)) ||! z)
Para mí, eso es un poco desagradable para destruir el cerebro y un lugar donde buscaría insectos. Sin embargo, si ha pasado las pruebas y demasiado depende de ello, es posible que deba abandonarlo.
A veces, está codificando alrededor de un cuerpo de código de ‘caja negra’ que requiere encantamientos grotescos para funcionar correctamente.
La experiencia en la materia y la experiencia en programación no siempre residen en la misma persona. Una gran cantidad de código escrito por académicos no es una muy buena programación, pero realiza tareas complejas que son difíciles de seguir para un programador ordinario.
Una de las peores razones por las que el código es, digamos, ‘retorcido’ es para satisfacer la vanidad del programador. He visto un montón de código que el programador creía que era inteligente, lo cual es desagradable. Si quieres ver un código tan horrible que es hermoso, ve aquí: El Concurso Internacional de Código C Ofuscado
El efecto Dunning-Kruger (efecto Dunning-Kruger) significa que hay algunos codificadores bastante horribles que se imaginan mucho mejor de lo que son. Crean un código irremediablemente roto y simplemente son demasiado inexpertos para reconocerlo.
Podría seguir, pero espero que entiendas la idea.