Fare una piccola modifica, testarla, quindi “risciacquare e ripetere”, è una cattiva abitudine?


54

Sono un programmatore con diversi anni di esperienza. Mi sono reso conto di avere una certa abitudine. Non sono sicuro che sia davvero una cattiva abitudine o meno.

Ottengo un elenco di attività da eseguire per una soluzione, anche piccole piccole attività, ad esempio,

  1. Cambia risorse di questo controllo utente
  2. Cambia le dimensioni di un altro
  3. Aggiungi HTML e codifica su un altro controllo utente

Tutte queste attività sono piccole. Voglio dire, possono essere eseguiti entro 10 minuti, ma ho la cattiva abitudine di apportare piccole modifiche e quindi testarle ancora e ancora in un browser web . È una buona pratica?

O dovrei eseguirle tutte in una volta e poi testarle insieme?

Se è davvero una cattiva abitudine, allora come posso correggerla, dato che mi sembra di perdere tempo testando piccoli cambiamenti ancora e ancora?



3
@gnat la tua risposta più votata è anch'essa basata sull'opinione - programmers.stackexchange.com/questions/154733/… Ogni risposta che leggo dà una propria opinione, qualche commento?
Matematica

2
Non è quello. che ne dici della tua seconda risposta più votata - programmers.stackexchange.com/questions/159964/… - non è anche basata sull'opinione?
Matematica

7
L'approccio è simile allo Test Driven Development in cui si crea un test, si apportano le modifiche necessarie per superare il test, quindi si eseguono i test. Quando lo ripeti per un secondo test, il tuo secondo test includerebbe il primo; dovrai ripetere il test più volte per provare che funziona ancora , ma è automatizzato.
Kevin Hogg,

5
Direi che l'opposto dell'abitudine, facendo un sacco di cambiamenti e solo dopo averlo testato, è l'abitudine cattiva.
Chris B. Behrens,

Risposte:


130
  • È una buona pratica.
  • Stai seguendo il metodo scientifico.
  • Se si cambiano diverse cose prima di qualsiasi test, allora il test di ciascuno sarà più difficile e forse non affidabile, poiché le condizioni preliminari saranno più difficili da preparare e le diverse modifiche possono interagire tra loro in modi che non erano previsti.
  • Il tempo che senti di "sprecare" adesso, ti riprenderai più tardi nelle fasi di intregrazione, test e mantenimento.
  • Ben fatto.

9
AFAIK, per la programmazione dell'interfaccia utente, non è solo una buona pratica, è l'unica pratica accettabile. Ecco perché le società di software hanno creato così tanti What you see is what you getstrumenti per gli sviluppatori che lavorano con HTML, CSS, Widget, ecc ...
Informato

38

Apportare molte piccole modifiche e testare ognuna non è una cosa negativa. Ti consente di vedere l'effetto di ogni modifica, e quindi quando una modifica provoca un problema, è molto più facile sapere quale modifica ha causato i problemi, la più recente!

Se disponi di un elenco di attività con 10 elementi e li esegui tutti in una volta, quindi testa la pagina e noti che la pagina sembra errata, potrebbe essere più difficile sapere quale modifica ha interrotto la pagina.

Certo, è possibile portare questo approccio all'estremo. Trovare l'equilibrio è la chiave, e ciò si ottiene acquisendo una migliore comprensione di ciò che stai cambiando e di come i cambiamenti potrebbero influenzarsi a vicenda.


18

La tua domanda ha due parti:

  1. dovrei eseguirli tutti una volta e poi provarli insieme?

    Presumo che tu stia usando un VCS .
    E per tenere traccia di quali attività sono state eseguite ha senso distribuire l'elenco di attività a un elenco di commit: un compito, un impegno .

    Ciò semplifica la gestione di diverse versioni dell'attuale base di codice; potresti ripristinare uno stato precedente, selezionare le modifiche che desideri inserire nel trunk principale, ecc.

    La risposta è chiara:

    No, apporta le modifiche solo una alla volta: un'attività commette una volta .

  2. ma ho la cattiva abitudine di fare piccoli piccoli cambiamenti e poi testarli ancora e ancora nel browser web, è una buona pratica?

    È buona norma testare il codice / UI in ogni caso , ma non ha senso farlo ripetutamente nel browser. Ci sono strumenti per farlo automaticamente per te ( Selenium, PhantomJS / Casper, ZombieJS )

    La risposta per questo caso è:

    Sì, è buona norma testare il software più di una volta, ma utilizzare l'automazione


2
+1, ma non sono d'accordo con l'utilizzo dell'automazione. Quando sto sviluppando una nuova funzionalità, collaudo sia manualmente che con l'automazione. I test manuali mi permettono di essere molto sicuro che le cose si stanno comportando come mi aspetto. È possibile scrivere un test automatico in modo errato, guardarlo passare e pensare che tutto sia a posto, quindi testare manualmente e vedere che qualcosa non va.
Kevin - Ripristina Monica il

Un task che un commit ha sicuramente il potenziale per rendere il registro VCS un pasticcio incomprensibile per varie definizioni di "single task"
whatsisname

dipende da quanto bene definisci l'attività;) o se lo desideri: un "ticket" un commit / branch. Usare git lo rende facile
Thomas Junk il

1
Per espandere ciò che ha detto Kevin, credo che se stai aggiungendo una nuova funzionalità che è il front-end, devi sempre controllarlo manualmente (devo ancora trovare un equivalente a TTD per il lavoro del front-end), ma vuoi anche la tua automazione suite per garantire di non aver rotto le funzionalità esistenti.
scragar

@scragar sì. L'automazione è per i test di regressione.
Thomas Junk,

6

Per ogni abitudine che uno sviluppatore ha, ci sono 2 domande principali:

  1. In che modo influenza la qualità del codice che crei?
  2. In che modo influenza la tua produttività?

Se la risposta ad entrambi è "Lo rende migliore", viziata, insegnala agli altri!
Se la risposta a una è "Migliore" e l'altra "Peggio" - è uno stile e devi esserne consapevole. Non è sempre applicabile e potrebbe essere necessario fare uno sforzo per sopprimerlo di tanto in tanto.
Se la risposta ad entrambi è "Negativa", hai un problema serio.

Naturalmente per i primi 2 casi dovresti anche pensare a "L'effetto positivo può essere in qualche modo automatizzato o istituzionalizzato?". Forse è meglio scrivere un test piuttosto che provare browser diversi ogni volta? (Nota, so che non è così facile testare il layout corretto nello sviluppo web, non sto dicendo che sia sempre possibile o che valga la pena).

In questo caso particolare, mi sembra che la qualità sia aumentata, la produttività potrebbe essere ridotta. Per i piccoli cambiamenti è probabilmente un pò cattivo (specialmente se i cambiamenti sono correlati), per i più grandi - è un po 'buono. Finché testerai anche il risultato finale (evita "ogni modulo è stato testato e funziona, quindi tutto funziona anche, non c'è bisogno di testarlo!").

Quindi - a meno che il 90% della tua giornata lavorativa non stia facendo piccoli cambiamenti - è un'abitudine perfettamente perfetta da avere. Se la tua giornata lavorativa è così, forse potresti voler rivedere il tuo stile di lavoro (o luogo di lavoro).


4

Questo dipende dal dominio. Per la stesura di una pagina web funzionerà bene e puoi ottenere un feedback immediato (puoi anche farlo direttamente nel browser!). Allo stesso modo funzionerebbe bene per tutto ciò che non richiede molto tempo per l'inizializzazione. Questo è preferito poiché mantiene basso il carico di lavoro mentale e riduce la possibilità di errori.

Tuttavia, per progetti davvero grandi in cui è necessario compilare il codice e il tempo impiegato non è banale (diversi minuti), ciò può comportare molti tempi di inattività, quindi è spesso necessario ricorrere a:

  • "parallelizzare" il flusso di lavoro (ad es. lavorare su più build contemporaneamente), oppure
  • fare quante più cose possibili in una volta sola, oppure
  • creare una piccola parte indipendente su cui lavorare e integrarsi successivamente nel progetto più ampio.

(Probabilmente ci sono anche altri modi.)


+1 per farlo direttamente nel browser. Farò spesso modifiche CSS direttamente nel browser come prototipo del vero lavoro che sto per fare.
RubberDuck,

0

Come altri hanno detto, questo è sicuramente non è una cattiva abitudine. In genere preferisco apportare solo alcune modifiche contemporaneamente. L'unica eccezione è se ho un ampio elenco di modifiche che non si influenzano tutte a vicenda (ad esempio modifiche a stili o copie minori, modifiche su pagine diverse, ecc.). Se stai modificando i layout, mantieni le modifiche una alla volta in modo da poter verificare che tutto sia al 100% in tutti i browser supportati prima di passare al problema successivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.