《编程风格》读书笔记

学习编程风格最好的方法应该是去读源代码

Posted by YueLng Chen on 2019-12-13

悠久历史

  • 往日的美好,内存约束下的写法
  • forth风格
    基本风格
  • 单片风格,由上往下瀑布流的写法
  • 食谱风格,分割各个函数,共享全局变量,各个函数只对全局变量进行处理
  • 流水线风格,每个函数都有明确的输入输出,消除全局变量
  • 高尔夫风格,尽量使用已有的基础库
    函数组合
  • 无限镜像风格,使用递归的方式进行处理,考虑是否调用栈过深,导致栈溢出,是否有尾递归优化
  • 骨牌风格,每个函数最后参数是函数,传入的参数是该函数下一步需要执行的函数。
  • 单子风格,构建(封装)一个反应器也就是单子,单子中包含绑定操作,每次将需要执行的函数传入单子进行执行,单子里始终包含中间结果
    对象与对象交互
  • 对象风格,标准的对象建模,对象包含数据域和针对数据域的函数,最后有一个controller调用相应的manager
  • 消息风格,也是先封装成manager,类似于消费消息队列的写法,调用统一的dispatch方法,根据message type 不同调用内部不同的方法
  • 闭域风格,问题分解为问题域的相关对象,对象是键值对,其中某些值是函数。
  • 抽象对象风格,所有的函数行为都抽象为标准操作,而具体的函数实现在对应的子类中
  • 好莱坞风格,注册回调模式
  • 公告板风格,发布订阅模式
    反射与元编程
  • 内省风格,程序获取自身信息的能力叫做内省
  • 反射风格,程序在运行时可以通过增加抽象,变量等方法进行自我修改
  • 切面风格,将问题的切面增加到主程序中,但不改变抽象的源代码和使用该抽象的代码段
  • 插件风格,将各个函数分布到不同的文件中,按需加载
    异常处理
  • 构建风格,当参数不合理或发生错误时,返回合理的结果或给参数指定合理值,并继续函数其他部分。
  • tantrum风格,当参数不合理的时候,立即抛出错误,程序停止运行
  • 消极攻击风格,在调用其他函数时,程序仅能检测能够提供有意义反馈的错误
  • 声明意图风格,检测所有传入的参数,若有不符预期的参数,则生成类型错误
  • 隔离风格,核心程序没有任何副作用,包括IO,所有io行为都包含在计算序列中,和纯粹的函数明确区分开。
    以数据为中心
  • 持久表风格,将数据装入数据库,并利用SQL进行计算。
  • 试算表风格,定义相应的数据与公式,当数据改变时,相应关联数据将自动改变
  • 漂流风格,数据可用形式为数据流,而不是整体,从上游到下游进行数据处理
    并发
  • 参与者风格,每个对象都有一个队列,存放向其他对象发送的消息,每个对象运行在独立的线程中。
  • 数据空间风格,一个或多个数据空间,用于并发单元数据的检索和存储,并发单元只能通过数据空间进行数据交换
  • map reduce,将输入数据分割成若干块
    交互
  • 三层架构风格,mvc风格
  • restful风格,web形式交互
    约束性写法
    由于内存约束的问题

https://github.com/crista/exercises-in-programming-style