ในการตอบคำถามสุดท้ายของทิมในการอภิปราย (ซึ่งยังกล่าวถึงหนึ่งในความคิดเห็นแรกสุดจากเลฟด้วย)
ในฐานะที่เป็นหนึ่งในผู้ที่แย้งสำหรับการแยกออกจาก destructors ใน statechart (อาร์กิวเมนต์ตามกรณีการใช้งานจริงเกี่ยวกับการมีปฏิสัมพันธ์กับโลกแห่งความเป็นจริงเช่น I / O) ย้อนกลับไปเมื่อมันถูกส่งไปยัง Boost ฉันเห็นด้วย ตรรกะใน destructors เดวิดอับราฮัมทำข้อโต้แย้งโน้มน้าวใจอย่างไม่น่าเชื่อเกี่ยวกับข้อยกเว้นด้านความปลอดภัยเช่นกัน ด้วยเหตุผลเหล่านั้น Statechart ไม่ต้องการให้คุณใส่ตรรกะใน destructors - แต่ช่วยให้คุณ - ด้วยคำแนะนำปกติ
ตรรกะที่ควรเรียกใช้เป็นส่วนหนึ่งของการเปลี่ยนแปลงจากสถานะ (ไม่ใช่การทำลายวัตถุ statechart โดยรวม) สามารถ (และควรถ้ามีทรัพยากรการล้างข้อมูลที่ต้องทำ) แยกออกเป็นการกระทำแยกต่างหาก ()
สำหรับสถานะ "thin" ที่ไม่มีสถานะแอ็คทีฟ (ทรัพยากร) เพียงแค่การเข้า / ออกเพื่อดำเนินการคุณสามารถทำการกระทำเหล่านั้นใน ctor และ d'tor และตรวจสอบให้แน่ใจว่าคอนสตรัคและ destructor ไม่ได้โยน ไม่มีเหตุผลที่พวกเขาจะ - ไม่มีรัฐใดที่ต้องปฏิบัติตาม RAII - ไม่มีความชั่วร้ายใด ๆ ในการจัดการข้อผิดพลาดในสถานที่เหล่านี้ทำให้เกิดเหตุการณ์ที่เหมาะสม คุณยังอาจต้องพิจารณาว่าคุณต้องการให้การกระทำออกจากนั้นเปลี่ยนสถานะภายนอกให้ทำงานโดยการทำลายเครื่องของรัฐแม้ว่า ... และทำให้พวกเขาออกจากการกระทำหากคุณไม่ต้องการให้เกิดการกระทำในกรณีนี้ ...
การเปิดใช้งานโมเดล Statechart เป็นการสร้างอินสแตนซ์ของวัตถุดังนั้นหากตัวสร้างของคุณมีการทำงานจริง / การเปิดใช้งาน / การสร้างอินสแตนซ์ที่ต้องทำและหากสามารถล้มเหลวได้เช่นนั้น เหตุการณ์ สิ่งนี้ได้รับการจัดการในวิธีที่ทำงานลำดับชั้นของรัฐที่กำลังมองหาสถานะภายนอกที่จัดการกับเหตุการณ์ข้อยกเว้นคล้ายกับวิธีที่สแต็กจะคลายสำหรับรูปแบบการเรียกตามสแต็กการโทร
เอกสารนี้เป็นเอกสารที่ดี - ฉันขอแนะนำให้คุณอ่านเอกสารและลองทำดู ฉันขอแนะนำให้คุณใช้ destructors เพื่อล้าง "ทรัพยากรซอฟต์แวร์" และออกจากการกระทำเพื่อดำเนินการ "การกระทำออกจริง"
เป็นที่น่าสังเกตว่าการเผยแพร่ข้อยกเว้นนั้นเป็นปัญหาเล็กน้อยในทุกสภาพแวดล้อมที่ขับเคลื่อนด้วยเหตุการณ์ไม่ใช่เพียงแค่แผนที่สถานะ ที่ดีที่สุดคือให้เหตุผลและรวมถึงข้อบกพร่อง / ข้อผิดพลาดในการออกแบบ statechart ของคุณและถ้าหากคุณไม่สามารถจัดการกับพวกเขาอีกวิธีหนึ่งที่จะยกเว้นการทำแผนที่ อย่างน้อยก็ใช้ได้กับฉัน - ymmmv ....