A veces, cuando verificamos el historial de confirmación de un software, podemos ver que hay algunas confirmaciones que son realmente GRANDES: pueden cambiar 10 o 20 archivos con cientos de líneas de código fuente (delta) cambiadas. Recuerdo que hay un término de uso común para este gran compromiso, pero no puedo recordar exactamente cuál es ese término. ¿Alguien puede ayudarme? ¿Cuál es el término que los programadores suelen usar para referirse a este compromiso GRANDE y gigante?
Por cierto, ¿comprometer muchos cambios en conjunto es una buena práctica?
ACTUALIZACIÓN: ¡gracias a todos por la inspiradora discusión! Pero creo que "bomba de código" es el término que estoy buscando.
cluster f...
Respuestas:
(1) Ben Collins-Sussman : "..." bombas de código ". Es decir, ¿qué haces cuando alguien se presenta a un proyecto de código abierto con una nueva característica gigantesca que tardó meses en escribirse? ¿Quién tiene tiempo para revisar? miles de líneas de código? ... "
(2) Dan Fabulich : "La bomba de código, o: el novato con grandes ideas ... Una bomba de código es un parche tan grande que nadie puede revisarlo".
(3) Google Summer of Code: Directrices : "Comprométase temprano, comprométase a menudo ... Por favor, no trabaje todo el día y luego empuje todo en una sola bomba de código . En cambio, cada compromiso debe ser autónomo para una sola tarea que debe resumirse en el mensaje de registro ".
(4) Jeff Atwood : "bombas de código ... Regla # 30: No te quedes oscuro ...
fuente
Probablemente lo llamemos un mal compromiso . :)
Mala práctica
Y sí, eso generalmente se consideraría una mala práctica , ya que tiene los efectos negativos de:
Casos aceptables
Sin embargo, puede tener casos en los que grandes confirmaciones son perfectamente aceptables . Por ejemplo:
Por lo tanto, siempre que sea posible, prefiera los tipos de confirmaciones de "ataque quirúrgico" (¡y vincúlelos a las ID de tareas en su rastreador de problemas!). Si tiene una razón válida, continúe.
Aparte de eso, en realidad no sé y creo que nunca escuché un nombre especial para una gran confirmación. ¿Un monstruo comprometido? ¿Un compromiso gordo?
Actualización: la respuesta de David Cary se vincula con actores notables de TI que usan el término "bomba de código" (lo más importante, Collins-Sussman, creador original de Subversion ). Así (aunque hasta ahora no puedo decir que escuché si a menudo).
fuente
Bueno, no es una buena práctica retener los cambios durante mucho tiempo e implementar una variedad de características y correcciones de errores, y luego confirmarlos, que es una de las formas en que podría ocurrir una gran confirmación.
Otra forma en que esto podría suceder es si una refactorización cambia la firma de una función ampliamente utilizada, y luego todas ellas deben cambiarse. Esto no es necesariamente malo, y no quisiera que los desarrolladores se abstengan de limpiar el código por temor a cruzar algún umbral.
Entonces, hay más que solo mirar la cantidad de archivos tocados en una confirmación.
fuente
El término que he escuchado es "registros gruesos" . Y no soy fanático de ellos. Me gustan los commits más pequeños que aseguran que nada más se rompa en un paso razonable en un proyecto. El gran compromiso generalmente está plagado de problemas que resuenan por un tiempo cuando eso sucede.
fuente
Lo llamo "confirmación SVN típica" o "mañana es la confirmación del día de lanzamiento"
Por mucho que me encante SVN, simplemente me desanima el hecho de que no puedo hacer commits locales.
EDITAR: generalmente tienen las palabras "cosas" y "cerveza" en el mensaje de confirmación.
EDITAR DE NUEVO: Cometer muchos cambios, aunque no necesariamente es una mala práctica, debe evitarse tanto como sea posible. Me resulta más fácil revisar una revisión / confirmación que es breve y concisa. (emparejado con un mensaje de confirmación bien escrito, vea mi edición anterior para un mal ejemplo)
fuente
Un "fragmento de código humeante". :-)
fuente
fuente
Por lo general, muchas personas tienden a realizar una gran confirmación utilizando VCS centralizado, especialmente el servidor aplica una buena política de confirmación. Es decir, el commit debe pasar todas las pruebas y las pruebas toman más tiempo (más de unos segundos). Por lo tanto, los desarrolladores no quieren esperar tanto tiempo para confirmar varias veces y desglosar los cambios en varias pequeñas confirmaciones.
Y los desarrolladores que son ecológicos para VCS pueden olvidar dividir los cambios en múltiples pequeñas confirmaciones. Solo recuerdan comprometerse cuando lanzan el programa al equipo de control de calidad. Peor aún, para evitar que otros vean código defectuoso, no se comprometen antes de pasar con éxito las pruebas de control de calidad. Por último, no se dieron cuenta de que habían comprometido los archivos binarios de salida, los archivos temporales y la salida del enlazador, que realmente producen un compromiso "grande".
fuente