ฉันเห็นสิ่งนี้มากมายในระบบเดิมของเราในที่ทำงาน - ฟังก์ชั่นที่เป็นไปตามนี้:
bool todo = false;
if(cond1)
{
... // lots of code here
if(cond2)
todo = true;
... // some other code here
}
if(todo)
{
...
}
ฟังก์ชั่นนี้มีสองส่วน ส่วนแรกทำการประมวลผลบางอย่าง (อาจมีลูปผลข้างเคียงและอื่น ๆ ) และตามวิธีที่อาจตั้งค่าสถานะ "todo" ส่วนที่สองจะดำเนินการก็ต่อเมื่อมีการตั้งค่าสถานะ "todo"
ดูเหมือนจะเป็นวิธีที่น่าเกลียดในการทำสิ่งต่าง ๆ และฉันคิดว่ากรณีส่วนใหญ่ที่ฉันใช้เวลาในการทำความเข้าใจจริง ๆ แล้วสามารถนำกลับมาใช้ใหม่ได้เพื่อหลีกเลี่ยงการใช้ธง แต่นี่เป็นรูปแบบการต่อต้านที่แท้จริงความคิดที่ไม่ดีหรือเป็นที่ยอมรับอย่างสมบูรณ์หรือไม่?
refactorization ชัดเจนแรกจะตัดเป็นสองวิธี อย่างไรก็ตามคำถามของฉันเกี่ยวกับว่ามีความต้องการ (ในภาษา OO สมัยใหม่) หรือไม่เพื่อสร้างตัวแปรแฟล็กท้องถิ่นอาจตั้งค่าในหลาย ๆ ที่แล้วใช้มันในภายหลังเพื่อตัดสินใจว่าจะรันโค้ดบล็อกถัดไปหรือไม่
["blacklisted-domain","suspicious-characters","too-long"]
ที่แสดงว่ามีหลายสาเหตุ