Qual è l'adescamento della pompa? Talvolta chiamato lettura di adescamento

15

Mi è stata insegnata questa espressione e questo modello nel corso della giornata. Certo, il nome deriva da vecchie pompe che dovevano essere riempite d'acqua prima che potessero pompare l'acqua, ma a chi importa? Stiamo parlando di codice qui.

Alcuni esempi veramente validi e una spiegazione di ciò che il modello realizza sono ben accetti. Come viene considerato questo modello oggi?

A volte l'innesco può far funzionare un loop difettoso ma al costo di DRY . Quindi potrebbe essere una breve sosta sulla strada per un design migliore. Questo è considerato un modello anti? Ci sono alternative?

    
posta candied_orange 19.04.2016 - 19:47
fonte

1 risposta

21

Questa metafora si riferisce quasi certamente alla pratica di stabilire il primo controllo condizionale in un ciclo while . Se non lo fai, il ciclo non funzionerà. È un modello consolidato e non è cambiato da quando è stato inventato il ciclo while . Il requisito per l'impostazione della condizione iniziale in un ciclo while è non un difetto.

int i = 0; // prime the pump
while (i < 10)
{
    Console.Write("While statement ");
    Console.WriteLine(i);
    i++; // set condition again
}

Il primer può essere un'istruzione read, o qualsiasi altra cosa imposta correttamente la condizione iniziale. L'impostazione della condizione iniziale utilizzando un'istruzione read è denominata "Priming Read."

string line;

using (StreamReader file = new StreamReader("c:\test.txt"))
{
    line = file.ReadLine(); // Priming read.
    while(line != null)
    {
        Console.WriteLine (line);
        line = file.ReadLine(); // Subsequent reads.   
    }
}

In C #, le due chiamate Readline() possono essere combinate in una singola istruzione all'interno del condizionale:

while ((line = r.ReadLine()) != null)
{
    Console.WriteLine (line);
}
    
risposta data 19.04.2016 - 20:15
fonte

Leggi altre domande sui tag