O que está preparando a bomba? Às vezes chamado de leitura de preparação

15

Eu aprendi essa expressão e o padrão desde o começo do dia. Claro, o nome vem de bombas antigas que precisavam ser cheias de água antes que pudessem bombear água, mas quem se importa? Estamos falando de código aqui.

Alguns exemplos realmente bons e uma explicação sobre o que o padrão realiza seriam bem-vindos. Como esse padrão é considerado hoje?

Por vezes, o arranque pode dar azo a um circuito defeituoso, mas ao custo de DRY . Por isso, pode ser uma breve parada no caminho para um melhor design. Isso é considerado um padrão anti? Existem alternativas?

    
por candied_orange 19.04.2016 / 19:47
fonte

1 resposta

21

Essa metáfora quase certamente se refere à prática de estabelecer a primeira verificação condicional em um loop while . Se você não fizer isso, o loop não funcionará. É um padrão bem estabelecido, e não mudou desde que o loop while foi inventado. O requisito para definir a condição inicial em um loop while não é um defeito.

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

O primer pode ser uma instrução de leitura ou o que quer que seja que defina corretamente a condição inicial. Definir a condição inicial usando uma instrução de leitura é chamada de "Leitura inicial".

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.   
    }
}

Em C #, as duas chamadas Readline() podem ser combinadas em uma única instrução dentro do condicional:

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