나는 모든 사람이이 최대 값이 실수라는 데 동의한다는 인상을 받았다. 그러나 나는 최근에 137 번 찬성 된 "관대 한"의견을 가진 이 답변 을 보았다 .
제 생각에는 브라우저가 받아들이는 한계는 HTML과 몇 가지 다른 웹 표준이 몇 년 전에 있었기 때문에 완전히 혼란스러워하는 직접적인 원인이었으며 최근에는 그 혼란에서 제대로 결정화되기 시작했습니다. 내가 보는 방식, 당신이 받아들이 는 것에 관대 하면 이것으로 이어질 것 입니다.
최대 값의 두 번째 부분은 "사양에서 요구하지 않는 한 오류 메시지를 리턴하지 않고 결함이있는 입력을 자동으로 폐기합니다" 이며 경계선이 불쾌감을 느낍니다. 조용히 실패했을 때 벽에 머리를 부딪친 프로그래머라면 내가 무슨 뜻인지 알 것입니다.
그래서 나는 이것에 대해 완전히 잘못입니까? 내 프로그램이 오류를 자동으로 받아들이고 삼키는 것에 관대해야합니까? 아니면 이것이 의미하는 바를 잘못 해석하고 있습니까?
원래 질문은 "프로그램"이라고 말했고, 나는 그것에 대해 모든 사람의 의견을 취합니다. 프로그램이 관대하다는 것이 합리적입니다. 그러나 실제로 의미 하는 것은 사람들이 아닌 다른 프로그램에 노출되는 인터페이스 인 API 입니다. HTTP는 예입니다. 프로토콜은 다른 프로그램 만 사용하는 인터페이스입니다. 사람들은 "If-Modified-Since"와 같은 헤더에 들어가는 날짜를 직접 제공하지 않습니다.
따라서 문제는 표준을 구현하는 서버가 관대해야하고 표준에 실제로 요구되는 것 외에도 몇 가지 다른 형식의 날짜를 허용해야 하는가하는 것입니다. 나는 "관대하게"는 인간의 인터페이스보다는이 상황에 적용되어야한다고 생각합니다.
서버가 관대하다면 전반적인 개선처럼 보일 수 있지만 실제로는 클라이언트 구현 으로 인해 관대함에 의존하고 약간 다른 방식으로 관대 한 다른 서버와 작동하지 않는 것으로 생각합니다.
그렇다면 일부 API를 노출하는 서버는 관대해야합니까, 아니면 매우 나쁜 생각입니까?
이제 사용자 입력을 관대하게 처리합니다. YouTrack (버그 추적 소프트웨어)을 고려하십시오. 마크 다운을 연상시키는 텍스트 입력 언어를 사용합니다. "관심"이라는 것을 제외하고. 예를 들어
- foo
- bar
- baz
글 머리 기호 목록을 작성하는 문서화 된 방법 은 아니지만 여전히 효과가 있습니다. 결과적으로 내부 버그 추적기에서 많이 사용되었습니다. 다음 버전이 나오고이 관대 한 기능이 약간 다르게 작동하기 시작하여이 기능이 아닌 기능을 사용한 목록을 여러 개 나누었습니다. 글 머리 기호 목록을 작성하는 문서화 된 방법은 여전히 유효합니다.
그렇다면 소프트웨어가 어떤 사용자 입력 을 받아 들여야합니까?