思考程序隔离和通讯

人们编程时很容易走到怎么想怎么作的过程式的思惟当中去, 可代码不是
代码须要的是抽象化和隔离, 一段代码尽可能不依赖不相关的那些数据
或者说, 一段代码应该保留尽量少的引用, 而且同时可以充分地完成工做
我挺喜欢的一个说法是, code is blind, 它只能触碰到整个程序中身边的一点点状态
对于代码进行隔离, 以及设计出良好的在隔离以后能协同工做的方案, 我认为极为重要编程

隔离的方案有:
* 闭包
* 类
* 文件做用域
* 另一个编程语言的环境设计模式

通讯的方案有:
* 直接引用
* 函数参数
* 全局的消息信道
* 取得输入输出的 channel 和 stream
* TCP Socket 等等外部的请求闭包

MVC 设计模式的各类变体, 就是隔离, 事件通知, 引用这些关联不断改变
好比 Flux 的数据流, 每一个部分主要接收前一个部分事件, 发送个下一个部分
这些架构的设计, 造成了模块重用的方便, 也决定了反向的一些操做将会有限制
我没能具体想清楚, 不过能够确认这在各类系统当中都存在并且起到做用架构

使用脚本语言和面向对象的咱们有个习惯是用引用数据来通讯
好比定义变量为 true, 通过操做获得 false, 其余引用代码就知道了状态改变
函数式编程当中, 数据是不可变的, 意味着经过变量拿不到变量的状态了
而代码通讯的需求并不会减小, 因而就被迫引入新的编程手段.. 好比重建整个状态..
状态的代码被整个重建, 可是沿用了变量名, 逻辑代码不变, 所以正常工做
固然重建状态意味着高阶函数和内存回收之类技术需求明显编程语言


相似的想法之前也写过, 上边是最近几天想到的东西..
具体想得不够清楚, 应该会有很多遗漏... 有兴趣的同窗帮我升发一下吧..函数式编程

相关文章
相关标签/搜索