# 软件开发中的“最”原则

## Principle of least astonishment（最小惊讶原则）

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658890854861/Hm1NGEuFC.png align="left")
又称最小意外原则，适用于用户界面和软件设计。 它建议系统的组件（代码）应该以大多数用户期望的方式运行。 该行为不应该使用户感到惊讶或诧异，根据操作的名称和其他线索，某项操作的结果应该是明显的、一致的和可预测的。 以下是该原则的正式陈述：“如果一个必要的特征具有很高的让人惊讶的因素，则可能需要重新设计该特征。”

## Principle of least effort（用小用力原则）

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658890879222/1Gn64eIOX.png align="left")

又称最小阻力路径（path of least resistance），本质上是说人们会通过最少的工作来完成某件事。人们（程序员）将使用最熟悉和易于使用的工具、技术来解决问题。

## Principle of Least Knowledge（最小可知原则）

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658890902400/TiWmi5Ikm.png align="left")

又称迪米特法则（Law of Demeter），根据“信息隐藏”原则，给定对象（类、方法）应尽可能少地假设其他任何事物（包括其子组件）的结构或属性。 它可以被视为最小特权原则（Principle of Lleast privilege）的推论，该原则规定一个模块只拥有其合法目的所必需的信息和资源。

## The Last Responsible Moment（最后责任时刻）

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658890926294/M24nbCe6Q.png align="left")

不过早做出仓促的决定，而是推迟承诺且保证重要和不可逆的决策的选项开放，直到不做出决定的成本变得大于做出决定的成本。越晚地做出决策（框架、技术选型），你就有更多的信息来辅助决策。

