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.
fuente
Respuestas:
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.
fuente
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.
fuente
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
fuente