Esta es una pregunta sobre cómo trabajar en equipo.
Recientemente trabajé en mi primer proyecto de programación más grande (~ 80 clases, Java) con un equipo de 6 personas, aunque solo 4 de nosotros trabajábamos continuamente en el código. Distribuimos el trabajo a realizar desde el principio y en algún momento tuve que llamar a un método que aún no estaba implementado por uno de mis coprogramadores. ¿Cómo es la forma recomendada de lidiar con esto?
Opciones que vi, aunque realmente no me gusta ninguna de ellas:
Escribiéndome
//TODO
y revisando esta línea de código más tarde para verificar si el método se ha implementado mientras tanto.Pidiendo al miembro del equipo correspondiente que implemente eso ahora .
Lanzar una excepción de tiempo de ejecución personalizada con una descripción clara de lo que aún no se ha implementado. (Al menos no tenemos que buscar mucho tiempo para descubrir lo que falta)
Agregar el método necesario a su clase y escribirlos
//TODO
en el cuerpo del mensaje, posiblemente también les envíe un mensaje rápido sobre ese cambio. (Ahora ya no es mi problema, pero esto puede causar conflictos de fusión molestos si estaban trabajando en este método mientras tanto)Definir clases o interfaces abstractas para todo antes de escribir realmente el código que hace el trabajo. (No funcionó muy bien porque estas interfaces a menudo se cambiaron)
Respuestas:
Es una pregunta interesante y la respuesta podría ser más fácil de lo que piensas.
En pocas palabras, escriba pruebas que validen sus suposiciones. No importa si haces la implementación o si tus compañeros programadores
La larga respuesta.
Cualquiera de las opciones que enumera son algo pasivas y requieren que regrese y vuelva a visitar el código (si existe) tarde o temprano.
Para lograr un nivel suficiente de pruebas, le sugiero que eche un vistazo a dos disciplinas.
TDD - desarrollo basado en pruebas - esto asegurará que describas tu intención y lo pruebes lo suficiente. También le brinda la posibilidad de simular o falsificar métodos y clases (también mediante el uso de interfaces) que aún no se han implementado. El código y las pruebas aún se compilarán y le permitirán probar su propio código en forma aislada del código de sus compañeros programadores. (ver: https://en.wikipedia.org/wiki/Test-driven_development )
ATDD: desarrollo impulsado por pruebas de aceptación: esto creará un bucle externo (alrededor del bucle TDD) que lo ayudará a probar la función en su conjunto. Estas pruebas solo se volverán verdes cuando se implemente toda la función, lo que le dará un indicador automático cuando sus compañeros completen su trabajo. Muy ordenado si me preguntas.
Advertencia: en su caso, solo escribiría pruebas de aceptación simples y no trataría de incorporar demasiado del lado comercial, ya que sería demasiado para comenzar. Escriba pruebas de integración simples que junten todas las partes del sistema que requiere la función. Eso es todo lo que se requiere
Esto le permitirá poner su código en una tubería de Integración continua y producir una implementación altamente confiable.
Si desea profundizar en ese tema, consulte los siguientes enlaces:
fuente
Pide trozos.
O escríbelos tú mismo. De cualquier manera, usted y sus compañeros de trabajo deben ponerse de acuerdo sobre las interfaces y cómo deben usarse. Ese acuerdo debe estar relativamente solidificado para que pueda desarrollarse contra trozos, sin mencionar, para que pueda crear sus propios simulacros para la prueba de su unidad ...
fuente
En su situación, hablaría con el miembro del equipo responsable de esa función. Es posible que estén en condiciones de priorizar el desarrollo de esa función para que pueda comenzar a usarla antes.
Me mantendría alejado de tu cuarta opción. Has escrito todo tu código y, como dices, ya no lo consideras tu problema. Luego, su colega escribe la implementación de la función y ya no la considera su problema. ¿Quién va a probar que el código que USTED escribió funciona correctamente?
fuente