分解的三要素,从经典中感悟
理解分层(纵向分解),插件(横向分解),开闭原则(正交分解)
对 CPU 来说,工作流是取指-译码-执行(闭),指令类型是其插件(开),上层/指令改变不影响底层/CPU 工作流;
对编译器来说,工作流是语法分析-抽象树优化-指令翻译,语法表达支持是其插件;
对 IO 来说,工作流是读取和写回,IO 类型是其插件;
对 CPU 调度来说,工作流是调度算法,线程/进程是其插件;
对函数来说,工作流是函数体内的语句,回调函数是其插件;
对 OO 来说,工作流是接口,实现接口的对象是其插件;
对 FN 来说,工作流是高阶函数,函子是其插件;
对数据/协议处理来说,工作流是序列化和反序列,schema 是其插件;
对工作流来说,工作流是状态机,状态是其插件。
回调、接口,可以看做是插件的简化版。
【开闭】是继【只读】后我们谈的第二个顶级原则。
这类原则一般 10 个就足够用了,特点是到哪都能说上话,是软件界的公理。反过来,碰到一个软件问题,你脑袋里应该能想起来几个符合的原则。
具体一点,有的函数是实现工作流的,这类函数会比较大/重,一般一层只需一个这类函数,或者说这类函数自身就能代表一层。剩下的大部分函数,是实现插件功能,一般只完成一件事,是大家平常理解的函数。当然也不排除插件函数里实现工作流函数,这样就形成了 3 层。
虽然是学习编程规范,但编程原则避不开:规范是原则的实践,原则是规范的理论指导。
版权声明: 本文为 InfoQ 作者【顿晓】的原创文章。
原文链接:【http://xie.infoq.cn/article/0888a2a3df8d02d77aa9f1aac】。文章转载请联系作者。
评论