Realmente me gusta este artículo sobre dejar el código / sitio de campamento en un estado más agradable de lo que lo encontraste ; parece un enfoque práctico en el mundo real mantenerse al tanto de la limpieza del código.
También me gustan las ramas de características como una forma de desarrollar características de forma aislada para que, si no te gusta, no puedas fusionarlas fácilmente, etc.
Sin embargo, si estoy trabajando en una rama de características y veo algún código feo, ¿debería solucionarlo?
Parece que hay una serie de inconvenientes para arreglarlo:
- Cuando vuelva a fusionar la rama, la diferencia será desordenada, abarrotada de renombramientos variables o extracción de funciones
- Si la función se abandona, debe elegir el compromiso de limpieza (que puede o no funcionar dependiendo de cómo ha cambiado el código cercano para hacer una fusión desordenada), volver a hacerlo o simplemente abandonarlo.
Por otro lado, si no lo hago mientras estoy en el archivo, entonces claramente me olvidaré de hacerlo dentro de un par de días cuando fusione la rama.
Me advirtieron que esto estaba basado en la opinión (creo que solo por el hecho que el título incluye should
), pero siento que hay una respuesta (ciertamente las personas usan ambos enfoques, por lo que deben tener una respuesta). Además, las preguntas sobre development methodologies
el tema y creo que necesitan un cierto grado de opinión.
fuente
Respuestas:
Solo debe "arreglar" el código en una rama de la característica si está cambiando ese código de todos modos como parte de la característica.
P.ej. Estoy trabajando en la función 'imprimir conejos' y encuentro el código de la impresora
Lo cambio a:
Por qué:
No golpeo al azar alguna otra parte de la base del código y 'lo hago mejor', ya que esto:
fuente
Si desea que sus refactorizaciones "vivan independientemente" de su rama de características actual, no realice los cambios allí. En cambio, realice la refactorización en la rama de desarrollo principal (o una "rama de refactorización", si es común en su equipo no aplicar cambios directamente a la rama de desarrollo). Por lo tanto, cualquiera de su equipo (incluido usted) puede fusionar los cambios en las ramas de características activas en las que están trabajando. Sin embargo, tenga cuidado de no aplicar ninguna refactorización global en "la mitad de la base del código" sin pedir permiso a sus colegas primero; es posible que no estén tan contentos si sus refactorizaciones interfieren demasiado con su trabajo actual.
La excepción es aquí cuando las mejoras que realiza son locales a las partes de la base de código que toca exactamente en esa rama de características, y no tiene sentido darles un ciclo de vida diferente al de su "nueva característica".
fuente
El propósito de los
branch
tipos es proporcionar la intención de manejarlos. Si usted está siguiendo un estilo GitFlow de ramificación, entonces es probable que tenga tipos comofeature
,hotfix
,release
, etc .. En el caso de una rama de la característica, su intención es encapsular fusiones en otra rama (es decirdevelop
) que muestra el desarrollador responsable de fusionando, cuál es esta característica. Si el código que está limpiando no forma parte de esa función, no lo cambie.En su lugar, encuentre la rama más baja posible en la que se encuentra el código feo (probable
develop
) y bifurque desde allí. Cambie el código y proponga fusionarlo como una característica. Si necesita ese código en lo que está trabajando y especialmente desea evitar conflictos de fusión, combine esa rama en SU rama.Aquí hay una muy buena explicación de diferentes estrategias: https://www.atlassian.com/git/tutorials/comparing-workflows/
fuente
Probablemente esté bien arreglar el 'código feo' a la vista, dependiendo del tempo del proyecto, la 'fealdad' del código, etc., pero trate de no hacerlo en la rama de la característica.
git add -p
para hacer el arreglo, confirmar ese cambio solamente , y antes de fusionar / push (de hecho, preferiblemente después de su próximo commit), use rebase interactivo para mover ese commit al punto más temprano posible en su rama, o posiblemente incluso elegir el desarrollo, dependiendo de su historial.También haría esto con cualquier otra cosa que esté 'arreglando' la rama de desarrollo (donde 'arreglos' son cambios que usted o cualquier otro desarrollador podrían hacer a la vista para asegurarse de que el código se adhiera a los estándares). Esto ayuda...
fuente