¿Qué tan rápido lees y entiendes el código?

Hay dos partes en esto, creo:

  1. Comprensión de líneas de código
  2. Comprender una pieza de software

El tiempo que lleva comprender uno puede no estar relacionado con el tiempo que lleva comprender el otro (suponiendo que tenga la capacidad de pasar línea por línea en papel).

Por ejemplo, puedo leer bien la sintaxis de C. Si pones un tipo de burbuja frente a mí en C, probablemente pueda identificarlo en un minuto y luego volver a codificarlo de memoria, porque ya entiendo el tipo de burbuja.

Mientras que si me entregas un código en C para multiplicar matrices dispersas que está muy optimizado para ejecutarse rápidamente, podría leer cada línea con la misma facilidad, pero podría llevarme una semana apreciar exactamente lo que está haciendo y por qué, especialmente sin comentarios . A menudo, el software en sí es donde está la mayor parte del desafío de comprensión.

Después de una cierta cantidad de práctica, el lenguaje se vuelve casi irrelevante al leer el código, a menos que use conceptos nuevos, que no haya visto antes.

Una pieza de C # simple es tan legible para mí como una pieza de Java simple, aunque nunca he escrito nada más que unas pocas líneas en Java. Pero voy a luchar mucho más si la implementación de Java usa herencia múltiple, ya que eso es algo a lo que nunca tuve que acostumbrarme.

“IDE / editor, lenguaje, comentarios, metodología (POO / funcional), patrones”

Con la excepción de los comentarios, todas estas cosas tienen como objetivo reducir la carga mental en el programador de las tareas repetitivas, para reducir el enfoque requerido para escribir código para que se pueda poner más esfuerzo mental hacia el algoritmo, hacia lo que el código está tratando de lograr. Le ayudan a escribir código productivamente, tanto como a leerlo rápidamente.

Los comentarios son sorprendentes: las oraciones breves realmente pueden ayudarlo a saber qué está tratando de hacer el código, la intención original de los programadores, que pone todo lo demás en contexto. También pueden ser útiles para explicar operaciones difíciles de una línea.

Incluso cuando los comentarios están desactualizados o son incorrectos (nunca puedes confiar en ellos al 100%), te dicen mucho sobre los objetivos del código. No importa cuánto cambie el alcance del proyecto, rara vez encontrará una función makeASandwich () que controle la temperatura del tostador de hierro.

Por lo general, soy muy rápido para leer y comprender el código. Solo estaba buscando JavaScript / REACT (una combinación que hasta hace aproximadamente un mes, nunca había visto antes) para tratar de averiguar lo suficiente para decirle a una persona de front-end cómo configurar algunos datos de prueba para Una pantalla particular. Me llevó unos 15 minutos buscar a través de varios archivos y una base de datos SQL para encontrar una respuesta para él.

Comenzar a depurar código, suponiendo que ya tiene configurado el entorno para ejecutarlo, no requiere mucho más que acceso a ese código. Dependiendo de los detalles específicos del problema, a veces no se requiere o solo se comprende un poco el código. Por otro lado, a veces incluso con un conocimiento profundo (como en el caso de que usted sea el desarrollador que creó el código) puede no ser suficiente para resolver el problema.

Reescribir el código es similar. A veces, se necesita una comprensión mínima. Otras veces, se necesita una comprensión profunda para poder reescribirlo.

Todas las cosas que mencionas afectarán la velocidad de comprensión. Un buen IDE / editor se moverá más rápidamente entre los lugares en el código. Si no conozco el idioma o el marco, es posible que tenga que consultar la documentación para resolver las cosas. La metodología o el estilo de la codificación definitivamente pueden afectar su legibilidad, pero si la persona no está tratando de ser oscura, generalmente no causa muchos problemas. Los patrones son similares.

Raramente dependo de comentarios, aunque al menos podría leerlos con la esperanza de que digan algo útil. Sin embargo, existe el peligro de que estén desactualizados, lo que los hace incorrectos y engañosos.