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ệ status
và 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ó.)