Modelli barra di avanzamento (Eclipse)

2

Ho faticato parecchio con Eclipse e con i monitoraggi progressivi per cercare di avere delle buone barre di avanzamento che riportano utili informazioni sull'avanzamento all'utente. Inevitabilmente il codice si riempie di molte cose come

if (monitor.isCancelled())
    return;

...

lengthyMethodCall(monitor.newChild(10));

e dappertutto ho bisogno di passare un IProgressMonitor come argomento ai miei metodi. Questo è male, per diversi motivi:

  1. Il codice viene ingombrato da un sacco di codice che non è rilevante per ciò che effettivamente fa la funzione.
  2. Devo ipotizzare manualmente quali parti del codice impiegano tempo e quali parti no.
  3. Interagisce male con i test automatici; dove gran parte delle informazioni che vanno in una barra di progressione dovrebbero invece essere registrate per un'ispezione successiva.

C'è una via d'uscita? Esistono strumenti che possono aiutarmi con uno o più di questi problemi? Dovrei guardare agli strumenti di programmazione orientata agli aspetti o ci sono altre alternative?

    
posta JesperE 20.11.2012 - 16:01
fonte

2 risposte

1

The code gets cluttered with lots of code which is not relevant to what the function actually does.

Suona come le eccezioni di run time di Java. :-) Immagino che un modo per uscire dal caos IProgressMonitor sia quello di concludere tutti i tuoi processi "batch" in Job s (org.eclipse.core.runtime.jobs).

I need to manually guesstimate which parts of the code takes time, and which parts do not.

Non proprio. Puoi racchiudere qualsiasi codice in Job . Se viene eseguito rapidamente, non vedrai nemmeno il popup del progresso monitor. Se è necessario del tempo per l'elaborazione, dovrebbe comunque essere Job .

It interacts badly with automated tests; where much of the information which goes into a progressbar instead should be logged for later inspection.

ratchet freak ha già risposto nel suo commento. Puoi scrivere la tua implementazione di IProgressMonitor che registra le informazioni che desideri.

    
risposta data 20.11.2012 - 16:32
fonte
0

forse potresti annotare ogni metodo con annotazioni personalizzate e poi elaborare quelle annotazioni.

o forse potresti registrare l'ultimo tempo di esecuzione di tali metodi e quindi stimare il tempo in base a quello.

    
risposta data 27.08.2013 - 15:24
fonte

Leggi altre domande sui tag