¿Qué es cebar la bomba? A veces se llama una lectura de cebado

15

Me enseñaron esta expresión y este patrón en el pasado. Claro, el nombre proviene de bombas antiguas que debían llenarse con agua antes de que pudieran bombear agua, pero ¿a quién le importa? Estamos hablando de código aquí.

Algunos ejemplos realmente buenos y una explicación de lo que logra el patrón serían bienvenidos. ¿Cómo se considera este patrón hoy?

En ocasiones, el cebado puede hacer que funcione un bucle defectuoso, pero a costa de DRY . Por lo tanto, puede ser una breve parada en el camino hacia un mejor diseño. ¿Se considera esto un anti patrón? ¿Hay alternativas?

    
pregunta candied_orange 19.04.2016 - 19:47

1 respuesta

21

Esta metáfora casi seguramente se refiere a la práctica de establecer la primera verificación condicional en un bucle while . Si no haces esto, el bucle no funcionará. Es un patrón bien establecido, y no ha cambiado desde que se inventó el bucle while . El requisito para establecer la condición inicial en un bucle while no es un defecto.

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

El cebador puede ser una declaración de lectura, o lo que sea que establezca correctamente la condición inicial. La configuración de la condición inicial mediante una instrucción de lectura se denomina "Lectura de cebado".

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

En C #, las dos llamadas Readline() se pueden combinar en una sola declaración dentro del condicional:

while ((line = r.ReadLine()) != null)
{
    Console.WriteLine (line);
}
    
respondido por el Robert Harvey 19.04.2016 - 20:15

Lea otras preguntas en las etiquetas