Hoy hice un checkout de algunos proyectos de código abierto solo por curiosidad. Así que después de un rato estaba mirando el código de OTTD (http://www.openttd.org/), simplemente no sabía por dónde empezar a buscar o cómo entender el proyecto. Sé que no puedes familiarizarte con proyectos tan grandes en uno o dos días, pero ¿cómo manejan esas cosas? ¿Dónde comienzas? ¿Qué buscas, etcétera?Cómo familiarizarse con los proyectos
Respuesta
Documentos para la fuente de OpenTTD: http://docs.openttd.org/, serán útiles.
Además, dev wiki: http://wiki.openttd.org/Development.
¿Cómo se familiariza?
Primero, intente compilar. Compílalo con tu plataforma y asegúrate de que esté funcionando correctamente.
Luego, elige un error o algo de la lista de tareas pendientes e intenta implementarlo, o simplemente juega y piensa en agregar/cambiar algo simple. Por supuesto, puede fallar y querer cambiar su tarea, pero cada intento será un paso hacia la comprensión de la estructura de un proyecto.
Para mí, la parte compiladora es la parte más molesta. Creo que es porque estoy en Windows :-) Casi nunca he logrado compilar algo desde cero sin días de pensar y enviar spam a las personas, etc. Pero rápidamente me acostumbro a muchos proyectos que no son necesarios compilar, como como está escrito en PHP o Python o JavaScript.
Acabo de hacer algo con el código. Cambió algunas constantes importantes :-) Escribiendo complementos. Lo que sea. Y un día comprendí que ahora, si elijo casi cualquier tarea del rastreador de problemas, podré descubrir al menos dónde se encuentra el problema.
¡Si solo está leyendo código, no lo va a saber bien! Incluso los libros de ficción (buenos) no se pueden entender completamente solo leyéndolos una y otra vez.
Muchas veces es útil tener mucho papel borrador, o alguna forma de herramienta de diagramación rápida: cuando se encuentre con cosas, describa cómo se relacionan entre sí. Con el tiempo obtendrás una idea de cómo se presentan las cosas y qué interactúa con qué, algo así como un diagrama de clase ad-hoc (pero mucho más libre).
Elija un punto de partida que pueda identificar: tal vez este sea el proceso de entrada del usuario, tal vez es la secuencia de inicialización del programa y siga el flujo de ejecución para hacerse una idea de cómo ocurren las cosas.
Afortunadamente, el código fuente tenía comentarios útiles, tal vez incluso, en el caso de OpenTTD, comentarios estilo doxygen, por lo que puede obtener un buen set of docs para ello.
Descargue el código.
Configúrelo en su IDE favorito para que se cree y ejecute.
Establecer un punto de interrupción al principio de main()
Pasa algún tiempo de calidad paso a paso por el depurador :)
le da una buena idea de cómo las cosas se ponen juntos, dónde están las dependencias y qué sucede cuando haces cosas en la aplicación.
Otra buena estrategia es comenzar con algún software que use, incluso uno en el que confíe. Luego encuentra el error más molesto y arréglalo.
- 1. Ideas para proyectos de juguete con el que familiarizarse con cacao y Cocoa Touch
- 2. Cómo entender los proyectos existentes
- 3. ¿Cómo adaptar CQRS a los proyectos?
- 4. ¿Cómo construir proyectos SCons con Eclipse CDT?
- 5. ¿Cómo trabajo con conjuntos y proyectos compartidos?
- 6. Cómo iniciar la modificación con grandes proyectos
- 7. Proyectos múltiples con Eclipse
- 8. ¿NetBeans funciona bien con los proyectos de Eclipse y viceversa?
- 9. ¿Cómo versionas tus proyectos?
- 10. MSBUILD Generar archivo de documentación XML para todos los proyectos en solución (sin tocar los proyectos)
- 11. ¿Cómo nombras tus proyectos?
- 12. ¿Cómo acreditas los proyectos de código abierto correctamente?
- 13. Ejecute MSBuild, respete los proyectos descargados
- 14. Configuración de proyectos con IvyDE
- 15. Comprensión de los proyectos CDT de Eclipse
- 16. ¿Cómo elimino los tipos de proyectos de Visual Basic?
- 17. ¿Cómo se gestionan los proyectos de código abierto
- 18. ¿Cómo se organizan los grandes proyectos de clojure?
- 19. ¿Cómo identifica Visual Studio/mstest los proyectos de prueba?
- 20. ¿Cómo enumero programáticamente todos los proyectos en una solución?
- 21. ¿Cómo entender los proyectos/bibliotecas de código abierto?
- 22. ¿Cómo se ocultan los directorios de proyectos .git?
- 23. ¿Cómo ejecuto todos los proyectos en un grupo de proyecto?
- 24. ¿Cómo organizar un proyecto grande con soluciones/proyectos/carpetas?
- 25. Cómo compartir un modelo Symfony2 con varios proyectos
- 26. Reemplazar .sln con MSBuild y envolver los proyectos contenidos en los objetivos
- 27. referencia Asamblea VS2010 entre los proyectos no
- 28. Django - ¿Cómo lidiar con los caminos en settings.py en proyectos de colaboración
- 29. Proyectos dentro de proyectos usando Git
- 30. ¿Cómo administrar múltiples proyectos similares pero diferentes con git?
Lo que termine haciendo, es bueno mantener un registro de sus notas (construir líneas de comandos que ejecutó, funciones que rastreó, ideas que tuvo, etc.) No solo le ayudará si olvida, sino que también podría contrátelos al wiki del proyecto o haga una publicación en su propio blog sobre sus hallazgos. – HostileFork