防御式编程和卫语句
推荐的方法结构:
function sample() {
/* 前断言 P {
这里是方法能够运行的前提
} */
/* 防御 {
消除异常、性能、安全等问题
} */
/* 逻辑正文 C */
}
表驱动
表驱动方法是一种编程模式(Scheme),其的核心思想是将数据代码如控制变量、参数等从逻辑代码中分离出来,并以模块化形式存放于外部表中,以此来概括逻辑、简化变更。
改进后,逻辑与数据分离,可单独维护数据或者逻辑,数据有数据的组织方法,逻辑也有逻辑的维护方式。
策略模式
策略模式在一般OOP语言的实践中大多以多态 (Polymorphism) 形式出现。
责任链模式
责任链的构成分为三步:
- 职责分离:将原本混杂在一起的职责边界划分清楚,形成多个的具备单一职责的函数;
- 构造责任链:将这些单一职责函数按顺序排列到数组中,形成责任链;
- 执行责任链:编写一个操纵函数,遍历责任链的各个函数并执行,设定终止执行的条件。
形态
- Pipeline 形态
这种形态的特点是,processor与processor之间呈简单的Pipeline形式,只用一个迭代器Manipulator即可操作整个流程。 - Route形态
这种形态的特点是流程呈树状,由多组processors形成的routeline构成,routeline之间的逻辑非常简单,可以由一个Manipulator + Table来控制整个流程。 - Middleware形态
与Routeline类似,但每一条子链之间的逻辑可能非常复杂,无法由一个Manipulator控制整个流程,需要多个Manipulator协作整个过程。
总结
- 写 if / else 前,判断是断言还是卫述;
- 坚持卫述表达,尽早退出;
- 数据、逻辑混合?走表驱动方法;
- 判断、执行逻辑混合?走策略模式;
- 逻辑像任务流水线?走责任链模式。