2020年/01月/08日
优秀软件要素
Good design is innovative.
Good design makes a product useful.
Good design is aesthetic.
Good design makes a product understandable.
Good design is unobtrusive.
Good design is honest.
Good design is long-lasting.
Good design is thorough down to the last detail.
Good design is environmentally-friendly.
Good design is as little design as possible.
好的设计是革新的。
好的设计是实用的。
好的设计是美观的。
好的设计使产品易于理解。
好的设计是谨慎克制的。
好的设计是诚实的。
好的设计是长命的。
好的设计在每个细节处都维持前后一致。
好的设计是环保的。
好的设计是尽可能少的设计。
Abstraction gradient
Closeness of mapping
Consistency
Diffuseness
Error-proneness
Hard mental operations
Hidden dependencies
Premature commitment
Progressive evaluation
Role-expressiveness
Secondary notation
Viscosity
Visibility
抽象层次
映射相似度
一致性
模糊
错误的概率
痛苦的心理活动
隐藏的依赖
过早地约定
渐进式评估
Good software is approachable. It can be understood completely in independent, easy pieces. You don’t need to understand everything before you can understand anything.
Good software is consistent. It lets you take what you’ve learned about one part and extrapolate it to the rest. It doesn’t self-contradict. It is parsimonious, avoiding superfluous elements.
Good software explains itself. It has affordances for learning and discovery. It is role-expressive and minimizes hidden magic.
Good software teaches. It doesn’t just automate an existing task, but provides insight or imparts knowledge, such as a best practice or a new perspective on a problem.
Good software is for humans. It is cognizant of people and the reality in which they live. It does not expect elaborate and arbitrary rules to be memorized. It anticipates the need for learning and debugging.
优秀的软件富有亲和力,在你理解某个地方之前,不必理解每个地方。
优秀的软件符合一致性。你在某处掌握的东西,可以推演到其它地方。不自我矛盾,简化,没有多余元素。
优秀的软件能够解释自己。
优秀的软件能够教东西。它除了自动化已有任务,还提供了见解、或传达着知识,比如某种最佳实践、或某个问题的新视角。
优秀的软件以人文本。