Hay dos partes en esto, creo:
- Comprensión de líneas de código
- 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.
- ¿Cuál es el mejor método para leer libros (ficción más no ficción) para que uno pueda sacar el máximo provecho de él?
- ¿Puedo leer un libro (300 páginas) en un día?
- Cómo enseñar / preparar a un niño pequeño para acelerar la lectura en lugar de “leer el sonido”
- Cómo aprender a leer 100 páginas en un día con la misma comprensión que si fuera hablado
- ¿Cómo un lector lento se vuelve rápido en la lectura?
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.