Estoy perdiendo la noción del flujo de mi aplicación web PHP, es cada vez más difícil trabajar con

14

He estado programando durante algunos años, y me he familiarizado con C # y JavaScript con el tiempo. Tengo algunos proyectos C # y JavaScript más grandes por los que no tengo problemas para navegar. Recientemente comencé un proyecto PHP y AngularJS para trabajar sin experiencia previa con PHP.

El flujo del lado PHP de las cosas se está volviendo difícil de rastrear (el lado JavaScript es más grande, pero fácil de resolver), cuando trato de pensarlo, imagino una bola de hilo enredada. Los principales errores de diseño que cometí cuando comencé están comenzando a acumularse y afectar mi diseño en el futuro. Lleva más y más tiempo implementar algo nuevo.

Estoy en una fecha límite ajustada y me resulta cada vez más difícil escribir un código bueno, SECO, SÓLIDO. Cada vez es más atractivo copiar / pegar fragmentos de código para hacer pequeñas variaciones en su comportamiento a medida que aumenta el tiempo de diseño. También me lleva mucho tiempo volver a la base del código cada vez que tengo que hacer un cambio de contexto (de un proyecto y luego a este), tengo una sensación de temor cada vez que vuelvo a trabajar en este proyecto.

¿Qué pasos puedo tomar para remediar esto? El tiempo adicional que puede tomar también debe ser justificable, mi jefe no es desarrollador y no está familiarizado con el desarrollo o los ciclos de vida del software, por lo que explicarlo puede ser más difícil de lo normal.

Douglas Gaskell
fuente
1
Gracias @gnat Sin embargo, estoy menos interesado en defender a mi jefe de lo que estoy pensando en cómo solucionar los problemas por sí mismos. Hacer un caso a mi jefe no servirá de nada si no conozco una buena forma metódica de identificar y cambiar los problemas.
Douglas Gaskell el

Respuestas:

11

Estás asumiendo una deuda técnica. Cuanto más justifique el código descuidado con fechas límite, más fechas límite verá que logre cada vez menos.

Comprenda que puede salirse con la suya por completo. Nadie te atrapará haciendo un desastre y te sacará. Vas a despertar un día rodeado de desorden.

En ese momento, actualizará su currículum y lo convertirá en mi problema o decidirá pagar la deuda y pasar algún tiempo limpiando el código.

Si sigue la ruta de limpieza, comprenda que no se trata de "pasar más tiempo en el diseño". Se trata de romper algunos hábitos perezosos y sacar la basura.

Tirar el código sucio al por mayor es una mala idea. No por el trabajo realizado, sino porque el código de trabajo captura una idea. Mueva la idea al código limpio antes de tirar la basura al código sucio.

Tener pruebas unitarias ayuda con esto, pero si creó sus pruebas con el mismo cuidado que puso en el desastre, es probable que también necesiten repararse.

No cedas a la rigidez. Si no puede cambiarlo, entonces no es un software.

naranja confitada
fuente
1
"Nadie te atrapará haciendo un desastre y te sacará". ... A menos que hagas una revisión de código. ;)
jpmc26
1
@ jpmc26 Si cree que las revisiones de código lo salvarán de este destino, se equivoca. Las revisiones de código solo lo ayudan cuando está dispuesto a aprender de los demás. No cuando te enfocas en una fecha límite. El código de trabajo desordenado triunfará sobre las opiniones una y otra vez. He visto a gerentes resolver estas disputas cambiando un cuarto. Si no le importa la calidad, nadie podrá sacarla de usted. No piense que puede confiar en otros para evitar que haga un desastre. Si se trata de eso, solo te asignarán para actualizar la documentación.
candied_orange
Si lees mi comentario y piensas que estaba diciendo que las revisiones de código son mágicas, como unicornios y arcoíris que arreglarán todo sin ningún esfuerzo o voluntad, estás increíblemente equivocado. Pero sí le dan a alguien la oportunidad de llamarte.
jpmc26
1
@ jpmc26 Si leíste mi respuesta y pensaste que estaba diciendo que no hay esperanza, solo ríndete, estás increíblemente equivocado. Estoy pidiendo a los programadores que asuman la responsabilidad personal del código limpio en lugar de depender de cualquier proceso para que esto suceda. Solo una cosa importa. Te importa o no.
candied_orange
Por supuesto, pero incluso el mejor programador tomará decisiones tontas de vez en cuando. Las revisiones de código con otra persona le dan la oportunidad de poner su código frente a otra persona que pueda detectarlo antes. Ese es todo el punto . Es difícil ver los puntos problemáticos usted mismo hasta que realmente intente cambiar algo y se vuelva difícil. Por supuesto, las revisiones de código y cualquier otra técnica son inútiles si no te importa.
jpmc26
9

Lleva más y más tiempo implementar algo nuevo.

Esta es tu justificación. confiesa, come un cuervo y explica por qué las cosas están tomando más tiempo y que necesitas pasar un poco de tiempo refactorizando + rediseñando el sistema.

Si no haces eso, necesitarás refactorizar poco a poco, en la parte inferior. Las tareas ya están tardando más de lo que usted desea: tómese un poco más de tiempo cada vez que toque la base del código para intentar mejorar algo. Agregar una prueba de integración. Extraer una abstracción.

La estúpida respuesta a "¿Cómo refactorizo ​​un gran proyecto?" es "Una pieza a la vez".

EDITAR

Estaba leyendo publicaciones relacionadas y encontré esta publicación de blog: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : no intente crear una gran 'fase' de refactorización en su proyecto; es poco probable que los propietarios del proyecto acepten su participación, y no estará guiado en sus elecciones sobre qué abordar durante el tiempo que tenga. En su lugar, tómese el tiempo para cada nuevo cambio o corrección de errores para eliminar el código con el que está trabajando en este momento. No permita que se queden los olores cuando tenga la oportunidad de solucionarlos.

Jen
fuente
3
Eso es exactamente lo que hice con mis herencias en el pasado. Lo bueno: una vez que tienes el punto de inflexión, el proyecto comienza a brillar con polvo de hadas.
qwerty_so
-2

Sonarqube admite PHP para que pueda ayudarlo a rastrear su deuda actual y nuevas fugas. http://docs.sonarqube.org/display/PLUG/PHP+Plugin

Muestra en vivo con Drupal https://sonarqube.com/dashboard?id=drupal

Arquímedes Trajano
fuente
1
Lamentablemente, no puedo instalar JVM en mi dispositivo de trabajo. Esto parece una gran herramienta de lo contrario.
Douglas Gaskell el
Eso es bastante draconiano para una estación de trabajo de desarrollador.
Arquímedes Trajano
No tengo administrador local, ni permisos de instalación, ni permisos de ejecución para ninguna aplicación que no esté en la lista blanca. Solía ​​ser mucho peor ... tristemente.
Douglas Gaskell el
No puedo decir que simpatizo, aunque simpatizo.
Arquímedes Trajano el
rechazado ya que es solo un anuncio / enlace a una herramienta, no una respuesta a la pregunta del OP.
James Snell el