리차드 가브리엘 (Richard Gabriel)의 유명한 에세이 The Rise of Worse는 더 낫다 . 그는 Unix가 인터페이스의 단순성보다 구현의 단순성을 우선시한다고 주장하기 위해 "PC 실패자 문제"( Josh Haberman의 다른 곳에서 논의) 의 예를 제시합니다 .
내가 생각해 낸 또 다른 예는 숫자에 대한 다른 접근법입니다. Lisp는 임의로 많은 수 (메모리 크기까지)를 나타낼 수있는 반면 C는 숫자를 고정 된 비트 수 (일반적으로 32-64)로 제한합니다. 이것이 정확성 축을 보여줍니다.
일관성과 완전성에 대한 몇 가지 예는 무엇입니까? 다음은 가브리엘의 모든 설명입니다 (그가 풍자 만화라고 인정합니다).
MIT / 스탠포드 접근
- 단순성-구현과 인터페이스 모두에서 디자인이 단순해야합니다. 인터페이스가 구현보다 단순해야합니다.
- 정확성-모든 관찰 가능한 측면에서 디자인이 정확해야합니다. 부정확성은 단순히 허용되지 않습니다.
- 일관성-디자인이 일치하지 않아야합니다. 불일치를 피하기 위해 디자인이 약간 덜 단순하고 덜 완성 될 수 있습니다. 일관성은 정확성만큼 중요합니다.
- 완전성-디자인은 실용적 많은 중요한 상황을 포함해야합니다. 합리적으로 예상되는 모든 사례를 다루어야합니다. 단순성은 완전성을 지나치게 줄일 수 없습니다.
뉴저지 접근
- 단순성-구현과 인터페이스 모두에서 디자인이 단순해야합니다. 인터페이스보다 구현이 간단해야합니다. 단순성은 디자인에서 가장 중요한 고려 사항입니다.
- 정확성-모든 관찰 가능한 측면에서 디자인이 정확해야합니다. 올바른 것보다 단순 해지는 것이 약간 좋습니다.
- 일관성-디자인이 너무 일관성이 없어야합니다. 경우에 따라 일관성을 위해 일관성을 희생 할 수 있지만 구현 복잡성이나 불일치를 도입하는 것보다 덜 일반적인 상황을 처리하는 디자인 부분을 삭제하는 것이 좋습니다.
- 완전성-디자인은 실용적 많은 중요한 상황을 포함해야합니다. 합리적으로 예상되는 모든 사례를 다루어야합니다. 다른 품질을 위해 완전성을 희생 할 수 있습니다. 실제로 구현의 단순성이 위태로워 질 때마다 완전성을 희생해야합니다. 단순성이 유지되는 경우 완전성을 달성하기 위해 일관성을 희생 할 수 있습니다. 인터페이스의 일관성은 특히 가치가 없습니다.
가브리엘이 옳은지 (스택 교환에는 적합하지 않은 질문인지) 묻는 것이 아니라 그가 언급 한 것에 대한 예를 들어 보자.