“ TILT” หมายถึงอะไรในความคิดเห็น


9

ฉันกำลังอ่านClean Codeของ Robert C. Martin และวลีนั้นTILTลึกลับปรากฏขึ้นในตัวอย่างโค้ดบางอย่าง ตัวอย่าง (ใน Java โดยวิธี):

    ...
    public String errorMessage() {
      switch (status) {
        case ErrorCode.OK:
          // TILT - Should not get here.
          return "";
        case ErrorCode.UNEXPECTED_ARGUMENT:
          return "Unexpected argument";
        case ErrorCode.MISSING_ARGUMENT:
          return "Missing argument";
        ...
    }
    ...

จากบริบทนี้ฉันเดาTILTว่าจะกำหนดสถานะที่ไม่สามารถเข้าถึงได้และรวมไว้เพียงเพื่อทำให้คอมไพเลอร์ (ตัวอย่างเช่นในโค้ดด้านบนTILTปรากฏในErrorCode.OKกรณีเนื่องจากไม่ควรมีข้อความแสดงข้อผิดพลาดหากรัฐเป็นOK) แต่ ฉันไม่แน่ใจ.

ไม่มีใครรู้ว่าสิ่งที่TILTหมายถึง / หมายถึง?


1
อาจเป็นคำตอบที่เกี่ยวข้องกับgaming.stackexchange.com
rwong

9
นี่อาจหมายถึงการเอียงพินบอลไม่ใช่การเอียงโป๊กเกอร์
Telastyn

คำตอบ:


13

เครื่องพินบอลทางกายภาพมีเซ็นเซอร์อยู่ในตัวซึ่งจะตรวจจับเมื่อมีสิ่งภายนอกพยายามออกแรงมากเกินไปที่จะมีอิทธิพลต่อเส้นทางของลูกบอลโดยการสะกิดหรือเอียงเครื่อง (ฉันพูดมากเกินไปที่นี่เพราะเบาะสำหรับปักเข็มมีประเพณีอันยาวนานของการเคลื่อนที่ในระดับหนึ่งซึ่งเป็นที่ยอมรับโดยเฉพาะเมื่อลูกบอลถูกแขวนบนบางสิ่ง) เมื่อเครื่องเข้าสู่สถานะเอียงสิ่งใดก็ตามที่สามารถทำคะแนนผู้เล่นได้มากกว่าคือ ปิดการใช้งานจนกว่าลูกตกจากด้านล่างของตาราง ซึ่งมักจะมาพร้อมกับแสง "เอียง" ในเกมและบางครั้งก็มีเสียงเตือน คิดว่ามันเป็นข้อผิดพลาดเทียบเท่ากับการยกข้อยกเว้น

คำอุปมาของมาร์ตินนั้นเครียดเพราะErrorCode.OKน่าจะเป็นสิ่งที่ถูกต้องstatusและไม่ใช่สิ่งที่พยายามบังคับให้ทำหน้าที่บางอย่างที่ไม่ควรทำ กล่าวอีกนัยหนึ่งอินพุตนั้นไม่ได้พยายามให้ฟังก์ชันส่งคืนข้อความแสดงข้อผิดพลาดสำหรับอาร์กิวเมนต์ที่ขาดหายไป


ส่วนที่เหลือไม่ตอบคำถามของคุณ แต่อาจให้เหตุผลแก่คุณที่จะอ่านส่วนที่เหลือของหนังสือด้วยตาที่สำคัญ ฉันไม่สามารถเข้าถึงหนังสือเพื่อดูว่าข้อความรอบตัวอย่างนั้นมีการโบกมือหรือไม่ แต่ถ้าไม่วิธีนี้จะทำสิ่งที่ไม่สอดคล้องกับชื่อ:

อย่างแรกคือมันไม่ถือว่าอินพุตหรือสถานะที่ไม่ถูกต้องน่าจะเป็นเงื่อนไขพิเศษและบ่นเกี่ยวกับมัน หากเอกสารของวิธีการบอกว่าควรเรียกเฉพาะเมื่อวัตถุstatusอยู่ในสถานะข้อผิดพลาดเท่านั้นมันชัดเจนว่าเป็นปัญหาตรรกะในรหัสการโทรที่ต้องได้รับการแก้ไข

ข้อที่สองคือมันส่งคืนสตริงที่ใช้ได้เช่นเดียวกับสตริงอื่น ๆ แต่ทำหน้าที่เป็นค่าคงที่เวทย์มนตร์ได้อย่างมีประสิทธิภาพ ผู้โทรที่ต้องการทราบว่าการเรียกใช้วิธีการนั้นเป็นความผิดพลาดหรือไม่นั้นจะต้องตรวจสอบเนื้อหาของค่าส่งคืนหรือส่งต่อให้คนอ่านเพื่อถอดรหัส (เช่นOperation result:ไม่มีข้อมูลเพิ่มเติม)

ตัวเลือกที่สามคือถ้าคอมไพเลอร์คาดว่าจะครอบคลุมค่าที่แจกแจงทั้งหมดการใช้defaultเพื่อจับเคสที่ไม่ครอบคลุมจะอ่านได้ง่ายกว่าการแจกแจงเป็นรายบุคคลหรือเป็นกลุ่ม (ฝั่ง filp คือมันอาจจะดีกว่าที่จะให้คอมไพเลอร์บ่นเพื่อเพิ่มวินาทีที่ไม่ใช่สถานะผิดพลาดจะบังคับให้โปรแกรมเมอร์ที่จะประกาศอย่างชัดเจนว่ามันควรจะจัดการ)


2
ฉันไม่มีสำเนา Clean Code ในมือ แต่คุณพลาดความเป็นไปได้ที่สี่: วิธีนี้เป็นเพียงฟังก์ชั่นตัวช่วยในการสร้างข้อความแสดงข้อผิดพลาดที่อ่านได้สำหรับบางสิ่งเช่นวัตถุยกเว้นซึ่งจะทำให้มันสมเหตุสมผลอย่างสมบูรณ์ตามที่เป็นอยู่ ไม่จำเป็นต้องมี "โบกมือ"
Doc Brown

@DocBrown นั้นเป็นจุดที่ยุติธรรมแม้ว่าสิ่งต่อไปที่น่าสงสัยก็คือเหตุผลที่ว่าทำไมวัตถุข้อยกเว้นทำให้ตัวเองถูกสร้างด้วยสถานะที่ไม่พิเศษ
Blrfl

2
FYI: เซ็นเซอร์เอียงแบบคลาสสิคเป็นลูกตุ้มโลหะที่ได้รับอนุญาตให้แกว่งได้อย่างอิสระภายในขอบเขตของวงแหวนโลหะ การกระแทกของเครื่องจักรจะเพิ่มการแกว่งของลูกตุ้มและถ้ามันสัมผัสกับวงแหวนด้วยไฟฟ้า การไม่กระแทกเครื่องเป็นระยะเวลาหนึ่งจะทำให้การแกว่งลงไปตาย ผู้เล่นไม่สามารถมองเห็นลูกตุ้ม: คุณแค่ต้องเรียนรู้จากการลองผิดลองถูกว่าเครื่องจะทนต่อแรงกระแทกได้มากแค่ไหน
โซโลมอนช้า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.