¿Cuáles son algunas de las cosas más difíciles que tuvo que hacer como desarrollador de PHP?

Michael Soileau golpea algunos de mis puntos débiles en este asunto m, pero para mí la parte más difícil no fue refactorizar el código que alguien más escribió, sino refactorizar el mío.

Una pequeña historia de fondo, la aplicación principal de mi empresa fue escrita en su primera versión en 1999, era una especie de aplicación de nube realmente prematura. Originalmente fue escrito en ASP clásico y créanme cuando digo que fue pedante. No tuve nada que ver con las primeras 5 subversiones más o menos, pero cuando entré en escena en 2005, definitivamente me gustaron las aplicaciones a gran escala.

Poco después, se decidió que el cambio a .NET era inevitable y bastante inminente. Habíamos dejado de admitir las versiones instaladas en los servidores de los clientes y solo teníamos como objetivo los servicios basados ​​en la nube. Esto fue un poco antes del servicio en la nube y SaaS se convirtió en palabras de moda, por lo que, según las medidas suecas, todavía era un mercado en dificultades.

Reescribimos toda la aplicación, refactorizamos las bases de datos, nos metimos con IIS y ¡guau! Aprendí mucho en ese entonces. Pero luego, cuando nos depararon tareas de mantenimiento, estaba a punto de renunciar a mi trabajo varias veces a la semana. El mayor inconveniente del desarrollo mientras se aprende es que el código lo atestiguará. Fue un desastre y no me lo pierdo en todos estos días.

Lección aprendida que pensarías. Bueno, los días de exageración de .NET terminaron rápidamente para nosotros cuando descubrimos más y más desventajas con respecto a la escalabilidad, la flexibilidad y, sobre todo, la “mantenibilidad”. El código fuente compilado para la web simplemente no se siente bien y, además de eso, Windows no es realmente una elección de primera clase en cuanto a seguridad o con respecto al tiempo de actividad (tener que reiniciar todo el servidor para una actualización, ¿qué somos, hombres de las cavernas?) .

Entonces, se hizo la elección. En el quinto aniversario de la versión .NET, decidimos hacer un cambio. Fuera con todo Microsoft y con buen viejo PHP. Mi viejo caballo de trabajo, aquí me sentí como en casa como siempre.

Reescribiendo nuevamente, sin repetir ninguno de los errores. O eso pensé.

Mirando hacia atrás a todo el código escrito que parecía ingenioso en ese momento, siempre me pareció descuidado al mirar hacia atrás unos meses más tarde, y como tal, he hecho grandes esfuerzos para mantener las convenciones de codificación y cierto estilo de código. Decidir y “diseñar” mis convenciones es lo que me hace sentir bastante seguro de que no habrá otro cambio de plataforma en mucho tiempo.

Hoy, casi tres años después, casi puedo buscar ciertas funciones centrales escritas en la etapa embrionaria y sentirme orgulloso de ellas. Me estremezco cuando miro algunas partes, pero en general me siento satisfecho. Claro, no está comentado, a veces las variables tienden a tener los nombres más crípticos y algunos métodos muestran el parecido de un panda borracho en una tienda de porcelana, pero aún así, hay un esfuerzo en ese código.

Es fácil olvidar lo fácil que es ser estúpido. Cometí algunos de esos errores y también pagué las cuotas por gran parte de ellos, pero en cualquier aspecto, cuando no hay nadie más a quien culpar excepto a ti mismo, es más difícil ser objetivo y darte cuenta de que – Sin pares o críticos adecuados – será su peor enemigo cuando se trata de escribir código mantenible y eterno.

No estoy seguro de si cuenta o no, pero mi primer trabajo en PHP incluyó la creación de software para un servidor telefónico. Esto se hizo en Delphi y este código de Delphi hizo muchas cosas, incluido el alojamiento de la página del servidor. Por lo tanto, no IIS o Apache, pero los navegadores se conectarían a través del puerto 80 directamente al código Delphi. Lo cual no era tan complejo para un programador experimentado de Delphi como yo.

Sin embargo, el código Delphi necesitaba generar informes y páginas de configuración, ¡y estos fueron desarrollados en PHP! El desarrollador original de PHP había abandonado el edificio, así que tuve que asumir su trabajo. E inmediatamente descubrí por qué había dejado el edificio, porque era un gran desastre. Tuve que pasar tiempo para refactorizar el código y hacerlo más legible y tuve que encontrar una manera para que PHP y Delphi interactuaran entre sí, lo cual no es tan fácil como parece. Pero al final, las cosas salieron bastante bien. Un usuario usaría el navegador para conectarse al servidor de Delphi, Delphi ejecutaría el archivo PHP requerido y le proporcionaría los datos requeridos y finalmente la página generada sería devuelta al usuario, con algún Javascript adicional para reducir el número de devoluciones de llamada.

El código Delphi también manejaría solicitudes web específicas, por lo tanto, no todas las páginas usarían PHP. Pero mezclar ambos idiomas en una solución de servidor fue bastante difícil. Pero también muy guay!

Sin embargo, no sería mi solución preferida. Pero la elección de PHP se realizó para que también pudiéramos ejecutar esas páginas en Apache o IIS, con pequeñas modificaciones. En caso de que quisiéramos comenzar a usar algo más … (En aquel entonces, C # 2.0 se estaba volviendo un poco más popular).

Refactorizar código heredado. Esto es lo más difícil que tendrá que hacer en cualquier idioma, especialmente si el código sufre los siguientes problemas:

1.) Es crítico para el negocio, por lo que no se puede quitar ni cambiar sin dañar el negocio o los clientes.

2.) Carece de documentación comercial, por lo que no tiene idea de cuál es la razón de la existencia del código.

3.) Carece de pruebas unitarias, por lo que no puede refactorizar y saber si cambió algo.

4.) Carece de documentación técnica o especificaciones, por lo que no tiene idea de lo que debe suceder como usuario final cuando se realiza el cambio.

5.) Tiene un código que se lee como si hubiera sido escrito por un mono en Adderall. Entonces no puedes analizar lo que sucedió en 1 -4.

Si quieres saber, he refactorizado 15 millones de líneas de código a 1 millón. Eso sigue siendo horrible, pero es más fácil de administrar y cambiar 1 millón de líneas de código que 15 millones.

More Interesting

¿ThankYou eventualmente cambiará de Rails?

¿Por qué debería crear una página 404 personalizada para un sitio web?

Documentación del proyecto de WordPress: ¿cómo optimizar la integración de nuevos desarrolladores en proyectos complejos de WordPress?

¿Puedes enumerar los complementos de WordPress que son esenciales y útiles para cada sitio web?

¿Cuál es el proceso generalmente aceptado para perfilar consultas MySQL?

Como empleador, ¿cuánta prima está dispuesto a pagar por los desarrolladores front-end calificados?

¿Debo aprender desarrollo web de un curso en línea pagado o de sitios web como w3schools y recursos de YouTube?

¿Cómo implementan las startups la autenticación y autorización del cliente?

¿Por qué Quora eligió Python para su desarrollo? ¿Qué desafíos tecnológicos enfrentaron los fundadores antes de decidirse por Python en lugar de PHP?

¿Cuál es la mejor encuesta para insertar en su sitio web?

¿Cuáles son algunas de las mejores prácticas de MVC?

¿Cuáles son algunas formas de crear un sitio web si no sé cómo codificar?

¿Los programadores generalmente firmarán convenios para no competir antes de la divulgación de una idea de diseño web?

¿Cuáles son algunas cosas ocultas que las empresas hacen para mejorar el sitio web de su empresa?

¿Angular 4 no admite la representación del lado del servidor o el enrutamiento del lado del servidor? ¿Cuál es la diferencia y si no es compatible con el renderizado del lado del servidor, cuáles son las desventajas además del SEO?