Tôi đã có ấn tượng rằng bây giờ mọi người đồng ý câu châm ngôn này là một sai lầm. Nhưng gần đây tôi đã thấy câu trả lời này có một bình luận "hãy khoan dung" được nâng lên tới 137 lần (tính đến hôm nay).
Theo tôi, sự khoan hồng trong những gì trình duyệt chấp nhận là nguyên nhân trực tiếp của sự lộn xộn hoàn toàn mà HTML và một số tiêu chuẩn web khác đã có từ vài năm trước và chỉ gần đây mới bắt đầu kết tinh chính xác khỏi mớ hỗn độn đó. Cách tôi nhìn nhận nó, khoan dung trong những gì bạn chấp nhận sẽ dẫn đến điều này.
Phần thứ hai của câu châm ngôn là "loại bỏ đầu vào bị lỗi một cách im lặng, mà không trả về một thông báo lỗi trừ khi điều này được yêu cầu kỹ thuật" và điều này gây cảm giác khó chịu. Bất kỳ lập trình viên nào đã đập đầu vào tường khi một cái gì đó thất bại âm thầm sẽ biết ý tôi là gì.
Vì vậy, tôi hoàn toàn sai về điều này? Chương trình của tôi có nên khoan dung trong những gì nó chấp nhận và nuốt lỗi không? Hay tôi đang hiểu sai ý nghĩa của điều này?
Câu hỏi ban đầu nói "chương trình", và tôi đưa ra quan điểm của mọi người về điều đó. Nó có thể có ý nghĩa cho các chương trình được khoan dung. Tuy nhiên, điều tôi thực sự muốn nói là API: giao diện tiếp xúc với các chương trình khác , thay vì con người. HTTP là một ví dụ. Giao thức là một giao diện mà chỉ các chương trình khác sử dụng. Mọi người không bao giờ trực tiếp cung cấp các ngày đi vào tiêu đề như "Nếu được sửa đổi-Kể từ".
Vì vậy, câu hỏi đặt ra là: máy chủ có nên thực hiện một tiêu chuẩn hay không và cho phép ngày ở một số định dạng khác, ngoài định dạng mà tiêu chuẩn thực sự yêu cầu? Tôi tin rằng "hãy khoan dung" được cho là áp dụng cho tình huống này, chứ không phải là giao diện của con người.
Nếu máy chủ khoan dung, nó có vẻ như là một sự cải tiến tổng thể, nhưng tôi nghĩ trong thực tế, nó chỉ dẫn đến việc triển khai máy khách mà cuối cùng dựa vào sự khoan hồng và do đó không thể làm việc với một máy chủ khác có thể khoan dung theo những cách hơi khác.
Vì vậy, một máy chủ nên phơi bày một số API có thể được khoan dung hay đó là một ý tưởng rất tồi?
Bây giờ vào xử lý khoan hồng của đầu vào người dùng. Hãy xem xét YouTrack (một phần mềm theo dõi lỗi). Nó sử dụng một ngôn ngữ để nhập văn bản gợi nhớ đến Markdown. Ngoại trừ việc nó "khoan dung". Ví dụ: viết
- foo
- bar
- baz
là không một cách ghi nhận của việc tạo ra một danh sách liệt kê, nhưng nó làm việc. Do đó, cuối cùng nó đã được sử dụng rất nhiều trong suốt chương trình sửa lỗi nội bộ của chúng tôi. Phiên bản tiếp theo xuất hiện và tính năng nhẹ nhàng này bắt đầu hoạt động hơi khác, phá vỡ một loạt các danh sách mà (mis) đã sử dụng tính năng (không) này. Tất nhiên, cách tạo tài liệu để tạo danh sách gạch đầu dòng vẫn hoạt động.
Vì vậy, phần mềm của tôi có nên khoan dung trong những gì người dùng nhập vào không?