¿Qué les sucede a los programadores con más frecuencia mientras leen el código de otros? [cerrado]

8

Al leer el código de otros, ¿generalmente tiene problemas para entenderlo, o es más común que cuestione el código de otros sobre si es incorrecto / no eficiente / mal formateado (etc.)?

Alguien leyendo lo que codificó en su primer trabajo

snoopy
fuente
Te vuelves asimilado. Te conviertes en parte del Uno.
Thomas Eding
1
Tengo que decir que en un entorno profesional, generalmente va a arreglar las partes rotas que tienden a ser las peores partes del código. Mi experiencia es que casi siempre es como tu caricatura. Si tiene la suerte de trabajar en algún lugar donde la calidad del software es crítica para el éxito empresarial, y la empresa lo aprecia, su experiencia será mucho mejor. Pero arreglar errores y extender cosas inevitablemente lo lleva a través de las peores partes de cualquier código base.
GlenPeterson

Respuestas:

19

En estos días no tengo muchos problemas para leer el código de otras personas. He visto tantos códigos malos, que incluso puedo diagnosticar qué tipo de evolución condujo a cualquiera que encuentre.

La mayoría de las veces, el código profesionalmente malo es un código que comenzó bien, pero las mejores prácticas, requisitos o habilidades se eliminaron de debajo. A veces es solo alguien que es malo o nuevo en el idioma, pero eso también es bastante evidente (y poco común en un entorno profesional). Cuanto más entiendo por qué el código se pudre, menos cuestiono la competencia de otros programadores.

Telastyn
fuente
99
+100 por "cuanto menos cuestiono la competencia de otros programadores". Creo que la actitud a veces presente "claramente un idiota escribió esto" crea un ambiente en el que los novatos tienen miedo de hacer preguntas (o los "no idiotas" no cuestionan sus propias prácticas lo suficiente), lo que a su vez conduce a un mal código.
Timothy Jones
1
@TimothyJones ¿Te das cuenta de que en realidad es posible otorgar +100 a través del mecanismo de recompensa?
Dawood ibn Kareem
1
@DavidWallace lo había olvidado, gracias. Sin embargo, entonces no podré comentar más. Quizás volveré y lo haré cuando no sea todo mi representante.
Timothy Jones
3
Lo peor es cuando dices: "Claramente, un idiota escribió esto" justo antes de que te des cuenta de que estás viendo tu propio código.
GlenPeterson
1
@GlenPeterson, No, diría que lo peor es cuando el que lo escribió está justo a tu lado ...
Svish
9

Este puede ser el resultado de este proceso de desarrollo .

En los últimos 2 años he trabajado con el código de otras personas. Lo he depurado, corregido errores y realizado mejoras. En mi experiencia, generalmente pienso que el código es malo, está lleno de errores, es lento, consume mucha más memoria de la necesaria, utiliza conceptos de programación inapropiados, está mal formateado (es difícil vivir con ellos), no está comentado y el flujo lógico es un lío. ¿Qué sucede si le digo que encontré una función con 5k líneas de código?

Entonces, en mi experiencia, generalmente cuestiono la calidad del código. Si algo es difícil de entender, porque es complejo, tiene sentido después de que lo entiendes. Pero si es malo, siempre será malo.

Joqus
fuente
4

Respuesta corta: En general, no nos gusta o somos muy críticos sobre por qué la codificación se realiza de esta manera, y no al revés. Sin embargo, cuanto más lees el código incorrecto de otros, más rápido aprecias el código bien escrito :)

Aunque pueda parecer obvio, la mejor manera de mejorar la lectura del código de las personas es: leyendo el código de las personas . El problema es que cuando las personas suelen leer el código de otras personas, no intentan " asimilarlo " , es decir, se familiarizan íntimamente con él; hacen el equivalente de la poesía de lectura rápida.

Para asimilar el código de otra persona, puede intentar lo siguiente:

  • Refactorizando el código.
  • Elegir una característica para agregar que requiere profundizar en el código.
  • Redacción de pruebas unitarias completas para el código.

Todos estos pasos te obligarán a leer el código con mayor profundidad.

También hay algunos consejos sobre cómo maximizar la comprensión de una base de código, que le han presentado para mantenimiento y soporte:

Una vez que tenga una idea básica de lo que está sucediendo, es posible que desee echar un buen vistazo al almacenamiento de datos (la capa de persistencia). Esa es otra excelente manera de comprender lo que está sucediendo, pero asegúrese de que las cosas que está estudiando estén realmente en uso. Puedo recordar algunas veces llegar al fondo de algunas clases con este enfoque, pensando que he entendido el sistema, y ​​luego darme cuenta más tarde de que las clases no se utilizaron en absoluto.

Puede parecer una tarea desalentadora: lleva tiempo y ninguna herramienta sofisticada puede eliminar la necesidad de inteligencia, pero también puede ser muy gratificante. A medida que avanza, probablemente encontrará muchos errores en los casos de esquina / borde y verá formas de mejorar el código. Un consejo: no te esfuerces demasiado en refactorizar / cambiar hasta que comprendas bien el código. A menudo, lo que parece un error o simplemente un código incorrecto cuando lo ve por primera vez, resulta ser un genio sutil en el trabajo en una investigación posterior e ilustrada. Además, eliminar el código no utilizado es muy satisfactorio y excelente para los futuros mantenedores. Por supuesto, con el supuesto de que toda la base de código está controlada por la versión.

Yusubov
fuente