Me gustaría evitar una situación en la que dos desarrolladores refactoricen el mismo código simultáneamente sin hablar primero, probablemente utilizando una herramienta de algún tipo, tal vez un complemento Eclipse. ¿Puede usted ayudar?
Tenemos 4,5 millones de líneas de código y más de 20 equipos de desarrolladores en cuatro continentes.
Idealmente, me gustaría que el segundo desarrollador mencionado anteriormente se dé cuenta de que alguien más está trabajando en el mismo código y hable con el primero antes de modificar cualquier cosa.
¿Conoces una solución?
refactoring
Roger CS Wernersson
fuente
fuente
Respuestas:
Muchos sistemas de control de fuente de segunda generación funcionan utilizando un "checkout" conectado que informa al servidor que tiene la intención de modificar un archivo. Los ejemplos incluyen TFS, SourceGear Vault y muchos otros. De esta manera, técnicamente puede cumplir con su requisito. Sin embargo, como señaló Adam Butler, este tipo de herramientas vienen con sus propios problemas (sin entrar en un largo debate: soporte limitado para el trabajo fuera de línea y, en general, flujo de trabajo de desarrollo contraproducente).
Definitivamente sugeriría algún tipo de enfoque jerárquico para asignar el trabajo de refactorización. Los desarrolladores podrían agruparse lógicamente en sub-equipos, cada uno responsable de áreas específicas del código. Dependiendo de cómo le guste estructurar los equipos, cada uno podría tener un rol de "líder" responsable del diseño de alto nivel del área del equipo. Esta estructura debería ser bien conocida por los desarrolladores, y debería simplificar la comunicación para la refactorización. Estoy seguro de que este enfoque parece demasiado formal y al revés para algunos, pero creo que es preferible que más de 20 desarrolladores utilicen un enfoque "gratuito para todos" para refactorizar un sistema grande. Algunas refactorizaciones se realizarán a un alto nivel (por ejemplo, cómo se comunicará el módulo X con el módulo Y), en cuyo caso necesitará personas que puedan hacer llamadas al nivel apropiado. No todos los desarrolladores del equipo deberían tomar decisiones arquitectónicas, por lo que casi se impone una jerarquía en cualquier caso, incluso si se elige ignorarla.
Básicamente, existen herramientas para cumplir con los requisitos básicos que usted establece, pero ninguna herramienta reemplazará las comunicaciones adecuadas y tendrá un pequeño número de personas que dirigen la arquitectura general de su proyecto.
fuente
fuente
Existen / fueron sistemas de control de versiones que hacen que los desarrolladores revisen el código antes de que puedan editar, pero estos tienen su propio conjunto de problemas. Una mejor práctica es hacer que los desarrolladores se comprometan y actualicen con frecuencia. Un desarrollador podría marcar una clase como depreciada y comprometerse; si el otro desarrollador actualiza antes de comenzar su refactorización, verá la intención.
fuente
La tecnología no puede resolver problemas sociales. Debe hacer que sus desarrolladores se comuniquen entre sí y coordinen su trabajo. Con 20 equipos, algunas estructuras y reglas serán esenciales. Querrá apoyarlos con soluciones tecnológicas, pero las personas son lo primero.
fuente
Si se va
notice that someone else is working on the same piece of code and talk to the first one before modifying anything
, según lo que dijo, necesita un sistema de control de versiones (CVS / SVN / GIT). Sin embargo, no estoy seguro, pero si quieres incluir eso también, necesitarás algunas cosas avanzadas (algún tipo de mecanismo de activación / algo personalizado tal vez).fuente
Los desarrolladores que bloquean archivos en el control de código fuente deberían resolver su problema fácilmente, pero creo que podría tener problemas más grandes.
4.5 millones de LOC es un entorno de pruebas masivo para jugar, por lo que, en una solución bien diseñada y diseñada, rara vez se encontrará con una situación en la que varios equipos de desarrolladores se pisen los pies. El hecho de que esto suceda más que por casualidad es revelador de algunos defectos de diseño potenciales serios que deberían considerarse.
fuente
Unas pocas cosas:
fuente