Hay dos cuestiones notables en la pregunta, la parte con tacto y la fecha límite próxima . Estos son asuntos distintos: el primero es una cuestión de comunicación y dinámica de equipo, el segundo es una cuestión de planificación y priorización.
Con mucho tacto . Supongo que desea evitar los egos cepillados y el retroceso negativo contra las críticas. Algunas sugerencias:
- Tener una comprensión compartida sobre los estándares de codificación y los principios de diseño.
- Nunca critique ni revise al desarrollador , solo el código . Evite la palabra "usted" o "su código", solo hable sobre el código que se está revisando, separado de cualquier desarrollador.
- Ponga su orgullo en la calidad del código completado , de modo que los comentarios de revisión que ayudan a mejorar el resultado final sean apreciados.
- Sugerir mejoras en lugar de la demanda. Siempre tenga un diálogo si no está de acuerdo. Intenta comprender el otro punto de vista cuando no estés de acuerdo.
- Haga que las revisiones sean en ambos sentidos. Es decir, la persona que revisó revisa su código a continuación. No tenga reseñas "unidireccionales".
La segunda parte es la priorización . Tiene muchas sugerencias para mejoras, pero como se acerca la fecha límite, solo hay tiempo para aplicar algunas.
Bueno, ¡primero debes evitar que esto suceda en primer lugar! Para ello, realiza revisiones continuas e incrementales. No permita que un desarrollador trabaje durante semanas en una función y luego revísela en el último momento. En segundo lugar, las revisiones de código y el tiempo para implementar sugerencias de revisión deberían ser parte de la planificación y las estimaciones regulares para cualquier tarea. Si no hay suficiente tiempo para revisar adecuadamente, algo ha salido mal en la planificación.
Pero supongamos que algo ha salido mal en el proceso, y ahora se enfrenta a una serie de comentarios de revisión y no tiene tiempo para implementarlos todos. Tienes que priorizar. Luego, vaya a los cambios que serán más difíciles y riesgosos de cambiar más adelante si lo pospone.
El nombramiento de identificadores en el código fuente es increíblemente importante para la legibilidad y la mantenibilidad, pero también es bastante fácil y de bajo riesgo cambiar en el futuro. Lo mismo con el formato de código. Así que no te concentres en esas cosas. Por otro lado, la cordura de las interfaces expuestas públicamente debería ser la máxima prioridad, ya que son realmente difíciles de cambiar en el futuro. Los datos persistentes son difíciles de cambiar: si primero comienza a almacenar datos inconsistentes o incompletos en una base de datos, es realmente difícil de solucionar en el futuro.
Las áreas que están cubiertas por pruebas unitarias son de bajo riesgo. Siempre puedes arreglarlos más tarde. Las áreas que no lo son, pero que podrían someterse a pruebas unitarias, son de menor riesgo que las áreas que no pueden someterse a pruebas unitarias.
Supongamos que tiene una gran porción de código sin pruebas unitarias y todo tipo de problemas de calidad de código, incluida una dependencia codificada de un servicio externo. Al inyectar esta dependencia, haces que el fragmento de código sea comprobable. Esto significa que en el futuro puede agregar pruebas y luego trabajar en solucionar el resto de los problemas. Con la dependencia codificada, ni siquiera puede agregar pruebas. Así que primero ve por esta solución.
¡Pero, en primer lugar, intenta evitar terminar en este escenario!