มีการอภิปรายที่เกิดขึ้นที่ comp.lang.c ++ มีการตรวจสอบว่ายืนยันหรือไม่ซึ่งใน C ++ นั้นมีอยู่เฉพาะในการสร้างข้อบกพร่องโดยค่าเริ่มต้นควรเก็บไว้ในรหัสการผลิตหรือไม่
เห็นได้ชัดว่าแต่ละโครงการจะไม่ซ้ำกันดังนั้นคำถามของฉันที่นี่คือไม่มากไม่ว่าจะยืนยันควรจะเก็บไว้, แต่ในกรณีนี้เป็นฝากฝัง / ไม่ได้เป็นความคิดที่ดี
โดยการยืนยันฉันหมายถึง:
- การตรวจสอบรันไทม์ที่ทดสอบเงื่อนไขซึ่งเมื่อเท็จแสดงให้เห็นข้อบกพร่องในซอฟต์แวร์
- กลไกที่โปรแกรมหยุดการทำงาน (อาจเกิดขึ้นหลังจากทำความสะอาดน้อยที่สุด)
ฉันไม่จำเป็นต้องพูดถึง C หรือ C ++
ความคิดเห็นของฉันเองก็คือถ้าคุณเป็นโปรแกรมเมอร์ แต่ไม่ได้เป็นเจ้าของข้อมูล (ซึ่งเป็นกรณีของแอปพลิเคชันเดสก์ท็อปเชิงพาณิชย์ส่วนใหญ่) คุณควรจะเก็บไว้เพราะการยืนยันที่ล้มเหลวแสดงข้อผิดพลาดและคุณไม่ควรไป เปิดด้วยจุดบกพร่องพร้อมความเสี่ยงของการทำลายข้อมูลของผู้ใช้ วิธีนี้บังคับให้คุณทดสอบอย่างมากก่อนที่จะส่งและทำให้มองเห็นข้อบกพร่องได้ง่ายขึ้นจึงง่ายต่อการตรวจจับและแก้ไข
ความเห็น / ประสบการณ์ของคุณคืออะไร
ไชโย
คาร์ล
ดูคำถามที่เกี่ยวข้องที่นี่
การตอบสนองและการปรับปรุง
เฮ้เกรแฮม
การยืนยันเป็นข้อผิดพลาดบริสุทธิ์และเรียบง่ายดังนั้นควรจัดการเหมือน เนื่องจากข้อผิดพลาดควรได้รับการจัดการในโหมดการปล่อยดังนั้นคุณไม่จำเป็นต้องยืนยัน
นั่นเป็นเหตุผลที่ฉันชอบคำว่า "บั๊ก" เมื่อพูดถึงการยืนยัน มันทำให้สิ่งต่าง ๆ ชัดเจนขึ้น สำหรับฉันแล้วคำว่า "ข้อผิดพลาด" นั้นคลุมเครือเกินไป ไฟล์ที่หายไปเป็นข้อผิดพลาดไม่ใช่ข้อบกพร่องและโปรแกรมควรจัดการกับไฟล์นั้น การพยายามระบุตัวชี้โมฆะเป็นข้อผิดพลาดและโปรแกรมควรยอมรับว่ามีบางสิ่งที่มีกลิ่นเหมือนชีสที่ไม่ดี
ดังนั้นคุณควรทดสอบตัวชี้ด้วยการยืนยัน แต่สถานะของไฟล์ที่มีรหัสการจัดการข้อผิดพลาดปกติ
เบี่ยงประเด็นเล็กน้อย แต่เป็นประเด็นสำคัญในการอภิปราย
ในฐานะที่เป็นหัวถ้าคำยืนยันของคุณบุกเข้าไปในดีบักเกอร์เมื่อพวกเขาล้มเหลวทำไมไม่ แต่มีเหตุผลมากมายที่ไฟล์ไม่สามารถอยู่ได้อย่างสมบูรณ์นอกการควบคุมรหัสของคุณ: สิทธิ์ในการอ่าน / เขียนดิสก์เต็มถอดอุปกรณ์ USB และอื่น ๆ เนื่องจากคุณไม่สามารถควบคุมมันได้ ไม่ใช่วิธีที่เหมาะสมในการจัดการกับสิ่งนั้น
คาร์ล
โทมัส
ใช่ฉันมี Code Complete และต้องบอกว่าฉันไม่เห็นด้วยอย่างยิ่งกับคำแนะนำเฉพาะนั้น
พูดว่าตัวจัดสรรหน่วยความจำแบบกำหนดเองของคุณขันสกรูออกมาและทำการเรียงหน่วยความจำที่ยังคงใช้โดยวัตถุอื่น ฉันเกิดขึ้นกับศูนย์ตัวชี้ที่วัตถุนี้ dereferences อย่างสม่ำเสมอและหนึ่งใน invariants คือตัวชี้นี้ไม่เคยว่างและคุณมีการยืนยันสองครั้งเพื่อให้แน่ใจว่ามันยังคงอยู่ คุณจะทำอย่างไรถ้าตัวชี้ทันใดนั้นเป็นโมฆะ คุณเพียงแค่ () ล้อมรอบด้วยมันหวังว่ามันจะใช้งานได้?
โปรดจำไว้ว่าเรากำลังพูดถึงรหัสผลิตภัณฑ์ที่นี่ดังนั้นจึงไม่มีการเจาะเข้าไปในดีบักเกอร์และตรวจสอบสถานะท้องถิ่น นี่เป็นข้อผิดพลาดจริง ๆ ในเครื่องของผู้ใช้
คาร์ล