¿Hacer un pequeño cambio, probarlo y luego "enjuagar y repetir" es un mal hábito?

54

Soy un programador con varios años de experiencia. Me di cuenta de que tenía un cierto hábito. No estoy seguro de si es realmente un mal hábito o no.

Obtengo una lista de tareas para realizar para una solución, incluso pequeñas tareas pequeñas, por ejemplo,

  1. Cambiar los recursos de este control de usuario
  2. Cambiar tamaño de otro
  3. Agregue algo de HTML y codificación en otro control de usuario

Todas estas tareas son pequeñas. Quiero decir que se pueden hacer en 10 minutos, pero tengo la mala costumbre de hacer pequeños cambios y luego probarlos una y otra vez en un navegador web . ¿Es esta una buena practica?

¿O debería realizarlos todos a la vez y luego probarlos juntos?

Si realmente es un mal hábito, ¿cómo lo rectifico, ya que se siente como perder el tiempo probando pequeños cambios una y otra vez?

Matemáticas
fuente
3
@gnat su respuesta más votada también está basada en opiniones - programmers.stackexchange.com/questions/154733/… Cada respuesta que leí está dando su propia opinión, ¿algún comentario?
Matemáticas
2
Eso no es. ¿qué tal su segunda respuesta más votada - programmers.stackexchange.com/questions/159964/… - ¿no se basa también en la opinión?
Matemáticas
77
El enfoque suena similar al Test Driven Development donde crea una prueba, realiza los cambios necesarios para pasar la prueba y luego ejecuta sus pruebas. Cuando repita esto para una segunda prueba, su segunda prueba incluiría la primera; volvería a probar una y otra vez para demostrar que aún funciona, pero está automatizado.
Kevin Hogg
55
Yo diría que lo contrario del hábito, hacer un montón de cambios y solo luego probarlo, es el mal hábito.
Chris B. Behrens

Respuestas:

130
  • Es una buena practica.
  • Estás siguiendo el método científico.
  • Si cambia varias cosas antes de cualquier prueba, entonces la prueba de cada una será más difícil y tal vez no confiable, ya que las condiciones previas serán más difíciles de preparar y los diferentes cambios pueden interactuar entre sí de maneras que no previó.
  • El tiempo que sienta que está "perdiendo" ahora, se recuperará más adelante en las etapas de integración, prueba y mantenimiento.
  • Camino a seguir.
Tulains Córdova
fuente
99
AFAIK, para la programación de UI, no es solo una buena práctica, es la única práctica aceptable. Es por eso que las compañías de software han creado muchas What you see is what you getherramientas para desarrolladores que trabajan con HTML, CSS, widgets, etc ...
InformedA
38

Hacer muchos pequeños cambios y probar cada uno no es algo malo. Le permite ver el efecto de cada cambio, y luego, cuando un cambio causa un problema, es mucho más fácil saber qué cambio causó problemas: ¡el más reciente!

Si tiene una lista de tareas con 10 elementos, y los hace todos a la vez y luego prueba la página y luego nota que la página se ve mal, puede ser más difícil saber qué cambio la rompió.

Por supuesto, es posible llevar este enfoque al extremo. Encontrar el equilibrio es la clave, y eso viene con una mejor comprensión de lo que está cambiando y cómo los cambios podrían afectarse entre sí.

FrustratedWithFormsDesigner
fuente
18

Tu pregunta tiene dos partes:

  1. ¿Debería realizarlos todos una vez y luego probarlos juntos?

    Supongo que está utilizando un VCS .
    Y para realizar un seguimiento de las tareas realizadas, tiene sentido distribuir la lista de tareas a una lista de confirmaciones: una tarea, una confirmación .

    Eso facilita la administración de diferentes versiones de la base de código actual; puede volver a un estado anterior, seleccionar los cambios que desea ingresar al tronco principal, etc.

    La respuesta es clara:

    No, realice cambios solo uno por uno: una tarea que se confirma .

  2. pero tuve la mala costumbre de hacer pequeños cambios pequeños y luego probarlos una y otra vez en el navegador web, ¿es una buena práctica?

    Es una buena práctica para el código de prueba / interfaz de usuario que sea , pero no tiene sentido hacerlo una y otra vez en el navegador. Hay herramientas para hacerlo automáticamente por usted ( Selenium, PhantomJS / Casper, ZombieJS )

    La respuesta para este caso es:

    Sí, es una buena práctica probar el software más de una vez, pero usar la automatización

Thomas Junk
fuente
2
+1, pero no estoy de acuerdo con el uso de la automatización. Cuando desarrollo una nueva característica, pruebo tanto manualmente como con automatización. Las pruebas manuales me permiten estar muy seguro de que las cosas se comportan de la manera que espero. Es posible escribir una prueba automatizada incorrectamente, verla pasar y pensar que todo está bien, luego probar manualmente y ver que algo está mal.
Kevin - Restablece a Mónica el
Una tarea que uno se compromete seguramente tiene el potencial de hacer que el registro de VCS sea un desastre incomprensible para varias definiciones de "tarea única"
cuál es el
depende de qué tan granular defina la tarea;) o si lo desea: un "ticket", un commit / branch. Usar git lo hace fácil
Thomas Junk
1
Para ampliar lo que dijo Kevin, creo que si está agregando una nueva característica que es front-end, siempre tiene que verificarla manualmente (todavía tengo que encontrar un equivalente a TTD para el trabajo front-end), pero también desea su automatización suite para ayudar a garantizar que no haya roto las funciones existentes.
scragar
@scragar sí. La automatización es para pruebas de regresión.
Thomas Junk
6

Para cualquier hábito que tenga un desarrollador, hay 2 preguntas principales:

  1. ¿Cómo influye en la calidad del código que haces?
  2. ¿Cómo influye en su productividad?

Si la respuesta a ambas es "Lo hace mejor", ¡no se joda, enséñelo a otros!
Si la respuesta a una es "Mejor" y la otra "Peor", es un estilo y debes ser consciente de ello. No siempre es aplicable, y es posible que deba hacer un esfuerzo para suprimirlo de vez en cuando.
Si la respuesta a ambas es "Negativa", tienes un problema grave.

Por supuesto, para los primeros 2 casos, también debe pensar en "¿Puede el efecto positivo ser automatizado o institucionalizado de alguna manera?". ¿Quizás sea mejor escribir una prueba que probar diferentes navegadores cada vez? (Tenga en cuenta que sé que no es tan fácil probar el diseño adecuado en el desarrollo web, no digo que esto siempre sea posible o valga la pena).

En este caso particular, me parece que la calidad aumenta, la productividad puede disminuir. Para pequeños cambios, es probable que sea algo malo (especialmente si los cambios están interrelacionados), para más grandes, es algo bueno. Siempre que pruebe el resultado final también (evite "cada módulo fue probado y funciona, así que todo funciona también, ¡no es necesario probarlo!").

Por lo tanto, a menos que el 90% de su día de trabajo esté haciendo cambios realmente pequeños, es un hábito perfectamente bueno. Si su día de trabajo es así, tal vez desee revisar su estilo de trabajo (o lugar de trabajo).

Ordous
fuente
4

Esto depende del dominio. Para diseñar una página web, funcionará bien y puede obtener comentarios inmediatos (¡incluso puede hacerlo directamente en el navegador!). Del mismo modo, funcionaría bien para cualquier cosa que no requiera mucho tiempo para inicializarse. Esto es preferible ya que mantiene baja su carga de trabajo mental y reduce la posibilidad de errores.

Sin embargo, para proyectos realmente grandes en los que tiene que compilar el código y el tiempo que lleva no es trivial (varios minutos), esto puede resultar en mucho tiempo de inactividad, por lo que a menudo debe recurrir a:

  • "paralelizar" su flujo de trabajo (por ejemplo, trabajar en varias compilaciones simultáneamente), o
  • hacer tantas cosas como sea posible de una vez, o
  • cree una pequeña parte independiente para trabajar e integrarla en el proyecto más grande más adelante.

(Probablemente también hay otras formas).

Viento rizado
fuente
+1 por hacerlo directamente en el navegador. A menudo hago ajustes de CSS directamente en el navegador como un prototipo del trabajo real que estoy por hacer.
RubberDuck
0

Como han dicho otros, esto definitivamente no es un mal hábito. Generalmente prefiero hacer solo algunas modificaciones a la vez. La única excepción es si tengo una gran lista de cambios que no se afectan entre sí (por ejemplo, cambios a estilos menores o copia, cambios en diferentes páginas, etc.). Si está modificando diseños, siga haciendo cambios uno por uno para que pueda verificar que todo esté al 100% en todos los navegadores compatibles antes de pasar al siguiente problema.

FreeAsInBeer
fuente