(Esta es una respuesta que me envió a una pregunta de un tiempo atrás. He modificado un poco para adaptarse a esta pregunta.)
La experiencia me ha demostrado que hay 3 objetivos principales que tiene el aprendizaje de un sistema heredado :
- Conozca qué se supone que debe hacer el código.
- Aprende cómo lo hace.
- (crucial) Aprenda por qué las hace de la manera que lo hace.
Las tres partes son muy importantes, y hay algunos trucos para ayudarlo a comenzar.
En primer lugar, resista la tentación de simplemente presionar ctrl-click (o lo que sea que use su IDE) a su manera alrededor del código para comprender todo. Probablemente no puedas mantener todo en perspectiva en tu mente de esta manera, especialmente cuando cada línea te obliga a mirar muchas otras clases para entender qué es, así que debes ser capaz de mantener varios niveles del apila en tu cabeza.
Lea la documentación cuando sea posible; generalmente te ayuda a obtener rápidamente un marco mental sobre el cual construir todo lo que sigue.
Ejecute casos de prueba cuando sea posible.
No tenga miedo de preguntarle a alguien que sabe si tiene alguna pregunta. De acuerdo, no debe perder el tiempo de otros con consultas inane, pero si hay algo que simplemente no entiende (esto es especialmente cierto con preguntas más conceptuales como, "¿No tendría mucho más sentido implementar esto como una ___ "o algo así), es probable que valga la pena buscar la respuesta antes de meter la pata y no se por qué.
Cuando finalmente se acostumbre a leer el código, comience en un lugar lógico "principal" e ir desde allí. No solo lea el código de arriba a abajo, o en orden alfabético, o cualquier cosa (esto es probablemente obvio).
Siempre dudo cuando empiezo a hacer esto, cuando estoy aprendiendo acerca de una base de código mi comprensión de la misma es deficiente y cualquier comentario que tenga sobre el código también será deficiente. Agregar comentarios para usted, por lo que temporalmente no es un problema, pero dejarlos para otros puede causar más confusión. –