Không có ý nghĩa gì trong một bình luận?


9

Tôi đang đọc Clean Code của Robert C. Martin và cụm từ TILTkhông thể giải thích xuất hiện trong một số mẫu mã. Ví dụ (bằng Java, bằng cách này):

    ...
    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";
        ...
    }
    ...

Từ ngữ cảnh, tôi đoán TILTchỉ định một trạng thái không thể truy cập và chỉ được bao gồm để đáp ứng trình biên dịch (ví dụ, trong đoạn mã trên, TILTxuất hiện trong ErrorCode.OKtrường hợp vì không nên có thông báo lỗi nếu trạng thái đó OK), nhưng Tôi không chắc.

Có ai biết những gì TILTlà viết tắt của / phương tiện?


1
Câu trả lời có thể liên quan đến chơi game.stackexchange.com
rwong

9
Điều này có lẽ đề cập đến nghiêng pinball, không phải nghiêng poker.
Telastyn

Câu trả lời:


13

Các máy pinball vật lý có các cảm biến trong đó phát hiện khi có thứ gì đó bên ngoài đang cố gắng tác động quá nhiều đến đường đi của quả bóng bằng cách huých hoặc nghiêng máy. (Tôi nói quá nhiều ở đây vì pinball có một truyền thống lâu đời của aa số tiền nhất định của chuyển động là chấp nhận được, đặc biệt là khi bóng được treo lên trên một cái gì đó.) Khi máy đi vào tình trạng nghiêng, bất cứ điều gì mà có thể điểm số điểm các cầu thủ hơn là vô hiệu hóa cho đến khi quả bóng rơi xuống dưới cùng của bảng. Điều này thường đi kèm với đèn "Nghiêng" trên trò chơi và đôi khi là tiếng chuông cảnh báo. Hãy nghĩ về nó như một pinball tương đương với việc đưa ra một ngoại lệ.

Phép ẩn dụ của Martin bị căng thẳng bởi vì ErrorCode.OK, có lẽ, là một thứ hợp lệ statusvà không phải là thứ cố gắng ép buộc chức năng làm một việc không nên làm. Nói cách khác, đầu vào đó không cố lấy hàm để trả về thông báo lỗi cho một đối số bị thiếu.


Phần còn lại của điều này không trả lời câu hỏi của bạn, nhưng nó có thể cho bạn lý do để đọc phần còn lại của cuốn sách với con mắt phê phán. Tôi không có quyền truy cập vào cuốn sách để xem liệu văn bản xung quanh ví dụ đó có vẫy tay không, nhưng nếu không, phương pháp sẽ thực hiện những điều không đúng với tiêu đề:

Đầu tiên là nó không coi đầu vào hoặc trạng thái không hợp lệ là một điều kiện đặc biệt và phàn nàn về nó. Nếu tài liệu của phương thức nói rằng nó chỉ nên được gọi khi đối tượng statusở trạng thái lỗi, thì rõ ràng đó là một vấn đề logic trong mã gọi cần được sửa.

Thứ hai là nó trả về một chuỗi có giá trị như bất kỳ chuỗi nào khác nhưng có hiệu quả như một hằng số ma thuật. Một người gọi muốn biết nếu gọi phương thức là một lỗi sẽ phải kiểm tra nội dung của giá trị trả về hoặc hoàn toàn chuyển nó cho người đọc để giải mã (ví dụ: Operation result:không có thêm thông tin).

Thứ ba tùy chọn sẽ là nếu trình biên dịch mong đợi phạm vi bao phủ đầy đủ của các giá trị được liệt kê, sử dụng defaultđể bắt các trường hợp không được bảo hiểm sẽ dễ đọc hơn nhiều so với việc liệt kê chúng riêng lẻ hoặc trong một nhóm. (Phía filp là có thể tốt hơn để cho trình biên dịch phàn nàn để việc thêm trạng thái không lỗi thứ hai sẽ buộc lập trình viên phải khai báo rõ ràng cách xử lý nó.)


2
Tôi không có bản sao Mã sạch trong tay, nhưng bạn đã bỏ lỡ một khả năng thứ tư: phương thức này chỉ là một hàm trợ giúp để tạo một thông báo lỗi có thể đọc được cho một cái gì đó giống như một đối tượng ngoại lệ, điều này sẽ làm cho nó hoàn toàn hợp lý vì nó là , không cần bất kỳ "vẫy tay" nào.
Doc Brown

@DocBrown Đó là một điểm công bằng, mặc dù điều tiếp theo cần tự hỏi là tại sao một đối tượng ngoại lệ cho phép bản thân được xây dựng với trạng thái không đặc biệt.
Blrfl

2
FYI: Cảm biến độ nghiêng cổ điển là một con lắc kim loại được phép xoay tự do trong giới hạn của vòng kim loại. Việc đập máy sẽ làm tăng độ lắc của con lắc và nếu nó tiếp xúc điện với vòng thì bạn sẽ mất quả bóng đó. Không va đập máy trong một khoảng thời gian sẽ cho phép chiếc xích đu chết đi. Người chơi không thể nhìn thấy con lắc: Bạn chỉ cần học bằng cách thử và lỗi xem máy có thể chịu được bao nhiêu lần.
Solomon chậm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.