[면책 조항 :이 질문은 주관적이지만 사실 및 / 또는 반영으로 답변을받는 것이 좋습니다.]
나는 모든 사람들이 견고성 원칙 에 대해 알고 있다고 생각합니다 . 일반적으로 Postel의 법칙에 의해 요약됩니다.
당신이 보내는 것을 보수적으로하십시오. 당신이 받아들이는 것에 자유를 주라.
나는 광범위한 통신 프로토콜의 디자인에 대해 (쉬운 확장을 허용한다는 목표로) 의미가 있지만, 항상 HTML / CSS에 대한 응용 프로그램이 완전히 실패했다고 생각했습니다. 감지 / 동작으로 인해 여러 브라우저에서 일관된 렌더링을 얻는 것이 거의 불가능합니다.
TCP 프로토콜의 RFC가 달리 명시되지 않는 한 "무음 실패"로 간주되는 것을 알 수 있습니다.
소프트웨어 교역 전반에 걸쳐이 원칙을 적용한 다른 예가 있습니다. 개발자가 내 머리에서 맨 처음부터 물 렸기 때문에 정기적으로 나타납니다.
- 자바 스크립트 세미콜론 삽입
- C (자동) 기본 제공 변환 (잘라지지 않으면 그렇게 나쁘지 않을 것입니다 ...)
"스마트 한"동작을 구현하는 데 도움이되는 도구가 있습니다.
- 이름 일치 발음 알고리즘 ( Double Metaphone )
- 문자열 거리 알고리즘 (레 벤슈 테인 거리 )
그러나이 접근법은 기술이 아닌 사용자를 처리하거나 오류 복구 프로세스의 사용자를 도울 때 도움이 될 수 있지만 라이브러리 / 클래스 인터페이스 디자인에 적용될 때 몇 가지 단점이 있음을 발견했습니다.
- 알고리즘이 "올바른"것인지 추측하는 것은 다소 주관적이므로 최소 놀랍게도 의 원칙에 위배 될 수 있습니다.
- 구현이 더 어려워서 버그가 발생할 가능성이 더 높습니다 ( YAGNI 위반 )?
- "추측"루틴을 수정하면 이전의 리팩토링 가능성을 거의 제외하고 오래된 프로그램을 중단 할 수 있기 때문에 동작을 변경하기가 더 쉽습니다.
그리고 이것이 나를 다음 질문으로 이끌었습니다.
인터페이스 (라이브러리, 클래스, 메시지)를 설계 할 때 견고성 원칙에 의존합니까?
내 인터페이스에서 광범위한 입력 유효성 검사를 사용하여 나 자신이 매우 엄격한 경향이 있으며 너무 엄격한 지 궁금합니다.