ในปี 2003 บทความนี้โดย Stephen Figgins บน linuxdevcenter.com BitTorrent ของ Bram Cohen ถูกอธิบายว่าใช้รูปแบบการออกแบบ "แก้ไขทุกอย่าง"
วิธีการทั่วไปที่น้อยกว่าซึ่งทั้งสองทำให้ BitTorrent ยากที่จะเข้าใจ แต่ควรค่าแก่การศึกษาคือการใช้ idempotence ของโคเฮน กระบวนการเป็น idempotent เมื่อใช้มากกว่าหนึ่งครั้งทำให้ไม่มีการเปลี่ยนแปลงเพิ่มเติม Cohen กล่าวว่าเขาใช้รูปแบบการออกแบบที่เรียกว่า "แก้ไขทุกอย่าง" ซึ่งเป็นฟังก์ชั่นที่สามารถตอบสนองต่อการเปลี่ยนแปลงจำนวนมากโดยไม่ได้สังเกตสิ่งที่มันอาจเปลี่ยนแปลง เขาอธิบายว่า“ คุณสังเกตเห็นเหตุการณ์ที่เกิดขึ้นจากนั้นเรียกใช้ฟังก์ชันแก้ไขทุกอย่างที่เขียนในลักษณะที่ไม่คุ้นเคยนี้และทำความสะอาดทุกสิ่งที่อาจเกิดขึ้นและคำนวณใหม่ทั้งหมดตั้งแต่เริ่มต้น” ในขณะที่ idempotence ทำให้การคำนวณยากขึ้นง่ายขึ้น แต่ก็ทำให้สิ่งต่าง ๆ มีความซับซ้อน ไม่ชัดเจนว่าการโทรกำลังจะเปลี่ยนแปลงหากมีสิ่งใดอยู่เสมอ คุณไม่จำเป็นต้องรู้ล่วงหน้า คุณมีอิสระที่จะเรียกใช้ฟังก์ชั่น
เสียงนี้ค่อนข้างดีบนใบหน้าของมัน
อย่างไรก็ตามสำหรับฉันแล้วการเรียกใช้ฟังก์ชั่น "แก้ไขทุกอย่าง" idempotent จะช่วยเพิ่มความแข็งแกร่งของระบบด้วยต้นทุนที่มีประสิทธิภาพและอาจทำให้ระบบที่บรรจุนั้นแย่ลง (ซึ่งอาจต้องการกระบวนการที่วางแผนและดำเนินการอย่างรอบคอบ)
ฉันไม่สามารถพูดได้ว่าฉันเคยใช้มาก่อน ฉันยังไม่สามารถหาแหล่งที่มาสำหรับการใช้งานออนไลน์ของเขา ( แต่ฉันไม่พบคนนี้ที่อ้างว่าจะขึ้นอยู่กับมัน.) หรือฉันสามารถหาอ้างอิงถึงมันนอกของบทความนี้ (และผมคิดว่า google-Fu ของฉันจะสวยดี) แต่ฉันไม่พบรายการสำหรับ"idempotent ความสามารถ" ใน SOApatterns.org
ความคิดนี้เป็นที่รู้จักกันดีในชื่ออื่นหรือไม่?
รูปแบบการออกแบบ "แก้ไขทุกอย่าง" คืออะไร? ข้อดีและข้อเสียของมันคืออะไร?
This sounds quite nice on the face of it.
จริงๆ? มันฟังดูน่ากลัวสำหรับฉัน!