函数
- 短小、命名、少参数
- 只做一件事,switch抽象工厂
- 做什么事、或者回答什么事
使用子程序
- 限制改动带来的影响,集中控制
- 隐藏 数据结构、指针操作、全局变量
- 提高代码可读性、简化测试
- 暴露功能,隐藏功能实现
防御性编程
- 限制参数,使用断言
- 不要修改参数
对象
- 得墨特尔:和朋友谈话,不和陌生人谈话
- 过程、面向对象:方便 函数 / 对象修改
- helper对象改进需要参数次序的函数
编程范式
编程单元 | 使用场景 | |
---|---|---|
面向对象 | 类或对象 | 数据变动可能大 |
面向过程 | 函数 | 功能变动可能大 |
函数式编程 | 无状态函数 |
- 面向对象的编程单元是类或对象,面向过程的编程单元是函数,函数式编程的编程单元是无状态函数
程序设计
- 低复杂性
- 高内聚,低耦合(高扇入,中低扇出)
- 高重复,分层
- GO程序设计
- 使用大写的 Service 对外暴露方法;
- 使用小写的 service 实现接口中定义的方法;
- 通过 NewService 函数初始化 Service 接口;
数据结构
- 在使用变量附近初始化