在理查德·加布里埃尔(Richard Gabriel)的著名文章《更糟的崛起》中,他将MIT / Stanford(Lisp)和新泽西(C / Unix)设计哲学的漫画版本沿简单性,正确性,一致性和完整性进行了对比。他举例说明了“ PC失败者的问题”(Josh Haberman在其他地方讨论过),以为Unix优先于实现的简单性而不是接口的简单性。
我想出的另一个例子是不同的数字方法。Lisp可以表示任意大的数字(最大取决于内存的大小),而C将数字限制为固定的位数(通常为32-64)。我认为这说明了正确性轴。
有什么例子可以保持一致性和完整性?以下是加百列的所有描述(他承认是漫画):
麻省理工学院/斯坦福大学的方法
- 简单性-设计必须在实现和界面上都简单。接口要比实现简单,这一点更为重要。
- 正确性-设计在所有可观察的方面都必须正确。根本不允许不正确。
- 一致性-设计一定不能不一致。为了避免不一致,允许设计稍微简单一些,不太完整。一致性与正确性一样重要。
- 完整性-设计必须涵盖尽可能多的重要情况。必须涵盖所有合理预期的情况。不允许过分简化完整性。
新泽西州方法
- 简单性-设计必须在实现和界面上都简单。简单的实现比接口更重要。简洁是设计中最重要的考虑因素。
- 正确性-设计在所有可观察的方面都必须正确。简单比正确要好一些。
- 一致性-设计一定不能过分不一致。在某些情况下,为了简化起见,可以牺牲一致性,但是最好将设计中处理不常见情况的那些部分放掉,而不是引入实现复杂性或不一致。
- 完整性-设计必须涵盖尽可能多的重要情况。所有合理预期的情况都应包括在内。可以牺牲完整性来支持任何其他质量。实际上,每当实现简单性受到威胁时,都必须牺牲完整性。如果保持简单性,可以牺牲一致性来实现完整性。尤其是一文不值的是接口的一致性。
请注意,我并不是在问Gabriel是否正确(这个问题不适用于StackExchange),而是要举例说明他可能一直在指的是什么。