¿Qué debo hacer si me cuesta leer el código heredado?

Honestamente, se siente como un conserje tratando de limpiar la mierda de otra persona.

Siendo un desarrollador senior, me enfrento a esto a menudo. Los códigos de producción heredados se entregan para futuras mejoras en un lapso de tiempo relativamente corto.

Recientemente recibí un antiguo script de shell Korn heredado y tuve que hacerlo compatible con EU GDPR (Página de inicio de EU GDPR).

Para empeorar las cosas, recientemente habíamos migrado a una nueva base de datos y Linux compatibles con la nube, mientras que el antiguo entorno, en el que se desarrolló originalmente el código, fue desmantelado.

Tuvimos que construir todo el entorno desde cero en el cuadro DEV, para poder ejecutar el código heredado.

Luego insertamos el registro de auditoría en el código tomando cualquier pista que pudiéramos obtener de los comentarios del código, ya que las documentaciones se hicieron “en la cabeza” de los primeros desarrolladores, que habían dejado la compañía hace unos años.

Otro desafío fue conocer los parámetros para ejecutar el código en primer lugar. Eso se resolvió consultando al equipo de producción.

Una vez que pudimos rastrear el comportamiento del funcionamiento interno del código, comenzamos a ensuciarnos las manos para las mejoras, es decir, el cumplimiento del RGPD de la UE.

En producción creamos un entorno paralelo similar a la ruta de producción original.

Ejecutamos el código modificado en este nuevo entorno de producción en paralelo a la producción anterior (fase CAT). Contactamos a pocos clientes como nuestros usuarios beta y les dijimos que marcaran los problemas que enfrentan.

Poco a poco, los problemas se resolvieron y una vez que los usuarios beta se mostraron felices de cerrar la fase CAT, lo cambiamos a producción principal con un esfuerzo mínimo (solo unos pocos cambios en los archivos de configuración y rutas de archivos, manteniendo los scripts antiguos en una carpeta de respaldo).

El resultado final fue que hicimos un gran cambio estratégico en el canal de campaña de marketing para una de las compañías de telecomunicaciones globales Fortune 500 en el mundo.

También creamos una guía de implementación y ejecución mínima y la subimos al punto de intercambio de la intranet de las empresas, para futuros equipos que realicen una mejora adicional de este código.

También creamos un tablero usando el marco de Java para que nuestro cliente pueda auditar el canal en tiempo real.

Espero que este enfoque te ayude también.

Solo tienes que mantener la calma y continuar.

Estoy trabajando en una base de código de línea de 250k de cinco años en un equipo pequeño. Ninguno de nosotros lo entendemos completamente.

Con el paso del tiempo, verá dónde se unieron nuevas personas al equipo. Puede ver sus intentos de evitar algunas abstracciones de las que no se han dado cuenta que los ayudarían. Puede ver dónde los fragmentos de código que se dispersaron causan problemas.

Y así.

Encuentro que Refactorizar por claridad me ayuda a integrar mi comprensión al respecto.

Pero te acostumbras a no tenerlo todo en la cabeza.

Cuando comencé a codificar solo, podía recordar lo que hacía todo. Ahora trabajo en un código más grande escrito por equipos donde las personas se unen y se van, no puedo hacer esto.

Entonces te adaptas. Aprende lo suficiente sobre cada característica a medida que avanza.

Siempre es un problema El código de lectura en frío es increíblemente difícil, y si no está especialmente bien escrito, comentado y documentado, tomará un tiempo considerable entrar en él y sentirse cómodo.

Es más fácil si puedes compilar y ejecutar el código.

Cada organización que alguna vez escribió el código fuente tiene documentación. ¿Puedes aprender de eso tal vez? O bien, la segunda forma tiene que aprender desde el principio, lo cual es un poco difícil, por lo que debe elegir la primera.

Estoy más o menos en la misma situación. Estoy lidiando con un componente central de un juego que estamos haciendo y es solo mi tercera semana en el trabajo. La base del código ya se usó para enviar un montón de juegos, por lo que hay años de legado y heredamos el código de otro estudio. Nadie en mi estudio realmente tiene la imagen completa. Simplemente avanzo lentamente siguiendo las pilas de llamadas de depuración y adivinando qué criterios de búsqueda pueden ser útiles. A veces lleva a otro lugar, otras veces es un callejón sin salida.

More Interesting

¿Hay concursos de programación para personas fuera de la escuela?

¿Qué opciones hay para un estudiante con una licenciatura de cuatro años, sin tener antecedentes en investigación, que busque la admisión en un doctorado en ciencias de la computación / ingeniería de software para demostrar a una institución que él / ella es investigador?

¿Hay algún bootcamp de ingeniería mecánica o eléctrica (similar a los bootcamps intensivos a corto plazo de ingeniería de software)?

¿Es vital tener habilidades sólidas de subprocesamiento múltiple al entrevistar a grandes empresas de software como Microsoft?

¿Qué es un procedimiento paso a paso para convertirse en un desarrollador de código abierto de GitHub para un novato completo? ¿Cuáles son los cursos de requisitos previos que debo tomar y cómo debo elegir el mejor proyecto? Además, sugiera algunos proyectos en C ++ / Java.

¿Qué es O (n) u O (nlogn) u otras expresiones similares con respecto a las estructuras de datos y algoritmos en informática?

¿Existe un software conocido de quiromancia / quiromancia que esté integrado con un escáner de palmas?

¿Cómo se puede usar la IA y el aprendizaje automático en los gráficos por computadora?

¿Cuáles son algunas buenas ideas para proyectos de ingeniería de software, preferiblemente con Java, JavaScript, PHP o en Android?

Para el desarrollo de software, ¿en qué circunstancias se debe utilizar el pensamiento funcional y en qué situación se debe utilizar el pensamiento orientado a objetos?

Cómo obtener el código fuente completo de JDK (Java) para depurarlo

Si alguien falla en su segundo año en ingeniería de software, ¿qué pasaría después de su cuarto año?

¿Cuál es la mejor pieza de software jamás escrita y en qué idioma?

¿Cuáles son las diferentes técnicas de recolección de basura (GC)?

¿Por qué otras especies en la tierra no han evolucionado como humanos?