เครื่องพินบอลทางกายภาพมีเซ็นเซอร์อยู่ในตัวซึ่งจะตรวจจับเมื่อมีสิ่งภายนอกพยายามออกแรงมากเกินไปที่จะมีอิทธิพลต่อเส้นทางของลูกบอลโดยการสะกิดหรือเอียงเครื่อง (ฉันพูดมากเกินไปที่นี่เพราะเบาะสำหรับปักเข็มมีประเพณีอันยาวนานของการเคลื่อนที่ในระดับหนึ่งซึ่งเป็นที่ยอมรับโดยเฉพาะเมื่อลูกบอลถูกแขวนบนบางสิ่ง) เมื่อเครื่องเข้าสู่สถานะเอียงสิ่งใดก็ตามที่สามารถทำคะแนนผู้เล่นได้มากกว่าคือ ปิดการใช้งานจนกว่าลูกตกจากด้านล่างของตาราง ซึ่งมักจะมาพร้อมกับแสง "เอียง" ในเกมและบางครั้งก็มีเสียงเตือน คิดว่ามันเป็นข้อผิดพลาดเทียบเท่ากับการยกข้อยกเว้น
คำอุปมาของมาร์ตินนั้นเครียดเพราะErrorCode.OK
น่าจะเป็นสิ่งที่ถูกต้องstatus
และไม่ใช่สิ่งที่พยายามบังคับให้ทำหน้าที่บางอย่างที่ไม่ควรทำ กล่าวอีกนัยหนึ่งอินพุตนั้นไม่ได้พยายามให้ฟังก์ชันส่งคืนข้อความแสดงข้อผิดพลาดสำหรับอาร์กิวเมนต์ที่ขาดหายไป
ส่วนที่เหลือไม่ตอบคำถามของคุณ แต่อาจให้เหตุผลแก่คุณที่จะอ่านส่วนที่เหลือของหนังสือด้วยตาที่สำคัญ ฉันไม่สามารถเข้าถึงหนังสือเพื่อดูว่าข้อความรอบตัวอย่างนั้นมีการโบกมือหรือไม่ แต่ถ้าไม่วิธีนี้จะทำสิ่งที่ไม่สอดคล้องกับชื่อ:
อย่างแรกคือมันไม่ถือว่าอินพุตหรือสถานะที่ไม่ถูกต้องน่าจะเป็นเงื่อนไขพิเศษและบ่นเกี่ยวกับมัน หากเอกสารของวิธีการบอกว่าควรเรียกเฉพาะเมื่อวัตถุstatus
อยู่ในสถานะข้อผิดพลาดเท่านั้นมันชัดเจนว่าเป็นปัญหาตรรกะในรหัสการโทรที่ต้องได้รับการแก้ไข
ข้อที่สองคือมันส่งคืนสตริงที่ใช้ได้เช่นเดียวกับสตริงอื่น ๆ แต่ทำหน้าที่เป็นค่าคงที่เวทย์มนตร์ได้อย่างมีประสิทธิภาพ ผู้โทรที่ต้องการทราบว่าการเรียกใช้วิธีการนั้นเป็นความผิดพลาดหรือไม่นั้นจะต้องตรวจสอบเนื้อหาของค่าส่งคืนหรือส่งต่อให้คนอ่านเพื่อถอดรหัส (เช่นOperation result:
ไม่มีข้อมูลเพิ่มเติม)
ตัวเลือกที่สามคือถ้าคอมไพเลอร์คาดว่าจะครอบคลุมค่าที่แจกแจงทั้งหมดการใช้default
เพื่อจับเคสที่ไม่ครอบคลุมจะอ่านได้ง่ายกว่าการแจกแจงเป็นรายบุคคลหรือเป็นกลุ่ม (ฝั่ง filp คือมันอาจจะดีกว่าที่จะให้คอมไพเลอร์บ่นเพื่อเพิ่มวินาทีที่ไม่ใช่สถานะผิดพลาดจะบังคับให้โปรแกรมเมอร์ที่จะประกาศอย่างชัดเจนว่ามันควรจะจัดการ)