ปั๊มรองพื้นคืออะไร? บางครั้งเรียกว่าอ่านรองพื้น


17

ฉันได้รับการสอนการแสดงออกและรูปแบบวิธีการในวันนี้ แน่นอนว่าชื่อนี้มาจากปั๊มเก่าที่ต้องเติมน้ำไว้ก่อนที่จะสูบน้ำได้ แต่ใครจะสนใจ? เรากำลังพูดถึงรหัสที่นี่

ตัวอย่างที่ดีจริง ๆ และคำอธิบายเกี่ยวกับรูปแบบที่สำเร็จจะได้รับการต้อนรับ รูปแบบนี้ได้รับการยกย่องในวันนี้อย่างไร

รองพื้นบางครั้งจะได้รับการทำงานที่มีข้อบกพร่องห่วง แต่ค่าใช้จ่ายของแห้ง ดังนั้นอาจเป็นการหยุดสั้น ๆ ระหว่างทางไปสู่การออกแบบที่ดีกว่า นี่ถือว่าเป็นรูปแบบการต่อต้านหรือไม่? มีทางเลือกอื่นอีกไหม?


1
คุณจะพบคำว่า "priming ปั๊ม" ในคำตอบที่ StackOverflowและหนังสือ คำว่า "เตรียมอ่าน" พบ ที่นี่ดูเหมือนกันมาก
candied_orange

คำตอบ:


23

คำอุปมานี้เกือบจะหมายถึงการฝึกฝนการสร้างการตรวจสอบแบบมีเงื่อนไขครั้งแรกในwhileลูป หากคุณไม่ทำเช่นนี้ลูปจะไม่ทำงาน มันเป็นรูปแบบที่ได้รับการยอมรับเป็นอย่างดีและไม่ได้เปลี่ยนไปนับตั้งแต่เกิดการwhileวนซ้ำ ข้อกำหนดสำหรับการตั้งค่าเงื่อนไขเริ่มต้นในwhileลูปไม่ใช่ข้อบกพร่อง

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

ไพรเมอร์สามารถเป็นคำสั่งอ่านหรือสิ่งที่ตั้งเงื่อนไขเริ่มต้นอย่างถูกต้อง การตั้งค่าเงื่อนไขเริ่มต้นโดยใช้คำสั่ง read เรียกว่า "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.   
    }
}

ใน C # การReadline()เรียกทั้งสองสามารถรวมกันเป็นคำสั่งเดียวภายในเงื่อนไข:

while ((line = r.ReadLine()) != null)
{
    Console.WriteLine (line);
}

1
ดี มีหลายครั้งที่คุณต้องทำ A และ B เพื่อทดสอบ T ระหว่างพวกเขา A T(B A)รูปแบบการทำรองพื้นแบบปกติจะทำเช่นนี้ แต่เป็นการทำซ้ำ A. ทางเลือกทั่วไปของรูปแบบทั่วไปนี้?
candied_orange

2
ดูรหัสสุดท้ายในคำตอบของฉัน
Robert Harvey

อันนั้นคลาสสิค คุณเคยแนะนำให้หยุดพักบ้างไหม?
candied_orange

ฉันไม่ได้ต่อต้านการออกจากลูปก่อนถ้าทำอย่างนั้นทำให้รหัสง่ายขึ้น บางครั้งคุณก็returnทำได้
Robert Harvey

1
ตัวอย่างจะมองหาการเกิดขึ้นครั้งแรกของสตริงในแต่ละบรรทัดของไฟล์ข้อความ คุณยังคงต้องwhileห่วง แต่เมื่อคุณพบสตริงในบรรทัดที่คุณเพิ่งอ่านคุณอาจจะหรือbreak return
Robert Harvey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.