# 分步行动机制文档（第二版）

为了让项目更接近于“高内聚，低耦合”的状况，我汲取了管道机制、函数式编程的思想，提出了**分步行动机制**（Substep-Action，又称**分步动作机制**，简称SA机制）。

### 定义

SA机制是一个用于控制数据处理的新机制。

传统的行动机制只提供一站式的完整操作（例如从源码编译到字节码，从字节码开始运行），这使得用户的自定义空间变少。

SA机制将大规模的操作细分成一个个细节操作，这些细节操作被称为**行动工具**。和函数一样，一个标准的行动工具会接受一系列的输入数据，进行处理后会生成一系列输出数据。

为了避免正确的数据被多个行动工具反复检查的冗余情况。这里引入**数据安全信任**和**数据安全承诺**的概念。数据安全信任指一个行动工具在接收输入数据时，对某些数据产生的信任，**受信任的输入数据不会被该行动工具检查**，数据安全信任提升了安全检查的效率，但用户和开发者也必须保证受信任的数据是安全的，一旦受信任的数据不安全，程序可能会产生崩溃等不可预知的致命错误。数据安全承诺指一个行动工具在生成输出数据时，对某些数据产生的承诺，**受承诺的输出数据一般是安全的**，不需要被反复检查，受承诺的输出数据通常会成为下一个行动工具所信任的输入数据，当然，数据安全承诺是建立在数据安全信任之上的，如果受信任的数据不安全，那么承诺的数据也不一定安全。

用户可以把一系列行动工具组合在一起，形成一个**动作组**（又称**行动工具链**）。启动这个动作组满足以下规则：

1. SA机制会把**起始数据**交给动作组的第一个行动工具
2. 除了最后一个行动工具以外，每一个行动工具产生的输出数据都会成为下一个行动工具的输入数据
3. 最后一个行动工具产生的数据就是**结果数据**

起始数据、结果数据以及所有行动工具间产生的数据，都被统称为**行动物品**。

### 解释

利用SA机制，用户可以自由的组合行动工具，提升了数据处理的自由性。

例如：将编译动作组和运行动作组连接在一起，编译生成的字节码直接交给运行端，就能不修改项目从而实现解释器的效果。如果其他编程语言想要共用Stamon的后端，也可以编译成AST编码文件，然后利用SA机制，直接把AST编码文件作为起始数据，生成字节码。

用户也可以开发属于自己的行动工具，提升自定义属性。例如：开发一个从屏幕上输入的文本编辑器，再把编译动作组和运行动作组连接在一起，就能实现从屏幕输入代码然后解释运行的效果了。

利用SA机制，用户可以不进行或少进行文件操作，让数据在内存中传递，提升了效率，增强了可移植性。