Qual è il concetto alla base della scrittura di un'operazione di annullamento in c ++? [chiuso]

2

Sto tentando di scrivere un'operazione di annullamento per un'applicazione di download del software. Questa applicazione trasferirà prima il software sul dispositivo e quindi installerà il software su di esso. (Questi sono dati che non posso modificare)

Cosa dovrebbe fare l'operazione di annullamento? Quando un utente preme "annulla", l'applicazione dovrebbe interrompere immediatamente il trasferimento / installazione del software.

Domanda: Poiché non ho mai scritto una funzione di "cancellazione", mi chiedo quali sono i tipi di cose da considerare quando si scrive il codice, e quali sono i bug comuni che dovrei aspettarmi e come gestirli?

Non ho trovato nulla in google quindi se hai dei link che potrebbero essere letti bene lo apprezzerei molto visto che non sto cercando risposte Sto solo cercando un aiuto per le linee guida / macro / concetto

    
posta ToMan 11.06.2014 - 17:07
fonte

2 risposte

2

Da una prospettiva macro, abbiamo la "Transazione di installazione". Mi riferisco ad esso come una transazione, dal momento che è un insieme di operazioni ACID, kinda.

Quando la transazione viene avviata, si inizia con il download, probabilmente in una directory temporanea. Questa è la prima operazione.

Dopodiché, si avvia l'operazione di installazione e ciò accade principalmente copiando i file nelle posizioni appropriate. È necessario modificare alcuni altri file, probabilmente, dovresti eseguirne il backup anche nella tua directory temporanea.

Ogni attività che esegui, puoi creare un ricordo per . Se la transazione viene annullata, passa semplicemente sui promemoria e ripristina tutto per ripristinare il computer dell'utente al suo stato iniziale.

Il diavolo è nei dettagli, così come nella lingua. Non penso di poter andare più a fondo.

    
risposta data 11.06.2014 - 17:46
fonte
0

What should the cancel operation do? When a user presses 'cancel', the application should stop transferring/installing the software immediately.

Concettualmente, dovresti considerare le operazioni di installazione in modo transazionale: ogni operazione è fatta o non eseguita (nessun effetto collaterale per un'operazione fallita, nessun effetto collaterale per un'operazione parzialmente eseguita).

Per fare ciò, isolare il più possibile una modifica al sistema, fino a quando non ha esito positivo o negativo, e considera di accettare le modifiche come un passaggio transazionale:

Approccio ingenuo:

  • scarica il software
  • installa il software scaricato
  • non c'è passaggio 3

Approccio realistico:

  • suddividi le tue operazioni eseguite come tali:

    • operazioni che non possono fallire (commette)
    • operazioni che possono fallire (staging)
    • operazioni che possono essere annullate (rollback)
  • definisce gli stati transazionali del tuo sistema: connessione al server, download, preparazione delle impostazioni di sistema, installazione

    • ogni operazione dovrebbe essere eseguita nei seguenti passaggi:
    • verifica le precondizioni (non altera lo stato del sistema)
    • operazione stage (esegue tutte le operazioni che non riescono a raggiungere lo stato successivo)
    • commit (imposta lo stato del sistema in base ai dati e allo stato di staging) e imposta lo stato di rollback
    • ripeti i passaggi per la prossima operazione
  • implementa ogni operazione per portarti da un passaggio transazionale al successivo o precedente.

Raggiungere idealmente lo stato precedente non dovrebbe essere in grado di fallire, ma non è così nella pratica. In quanto tale, il memento è un buon modello da utilizzare: accodare gli stati transazionali e, nel caso sia necessario eseguire il rollback, è sufficiente indicare il sistema a uno degli stati memorizzati.

    
risposta data 12.06.2014 - 16:44
fonte

Leggi altre domande sui tag