- 编程语言
- 语法
- 数据结构
- 编程模型
- 面向对象
- 面向过程
- 编程思想
- 契约编程
- 设计模式
- 封装继承多态
- 静态接口
- 动态代理
- 字节码
metadata
- 泛型
- 反射
- 注解
- 函数式接口
- 默认方法
- 方法引用
- 语义
- 最基本:23设计模式
面向对象设计模式,面向切面设计模式...
- 接口驱动
- 配置驱动
- 注解驱动
- 函数驱动
- 模块驱动
- 解决的问题:系统规模日益变大
业务问题模块
- 驱动设计
- 关注领域,而非细节
- 驱动代码实现
理解领域
- 领域专家
拆分领域
细化子域
- 标准
- 业务规则
- 业务场景
- 业务流程
约束领域
- 划分边界
第一步:重现问题
第二步:思考原因
第三步:验证假设
如果无法确定问题,可以缩小范围
修复bug应了解其产生原因
抽象更接近问题的本质
- 寻找共性
- 提升抽象层次
- 函数分解
- 优雅的代码不是一次写成的
- 分治模式
- pipline
- 分层设计
- 垂直拆分/水平拆分
- 灵光一现的算法
使用更合适的数据结构能减少代码量
- 断言
- 测试
- 问题定义
- 系统结构
- 算法与数据结构
- 代码调优
- 系统软件
- 硬件
使用小实验获取关键参数
任何事都应尽量简单 但不宜过于简单
- 保存状态 避免重复计算
- 动态规划
- 对信息进行预处理至数据结构中
- 分治算法
- 扫描算法
- 还是动态规划
- 不成熟的优化是大量编程灾害的根源
- 需要有一个度量工具
- 注意代码调优是一把双刃剑
一些优化方案:
- 缓存
- 等价的代数表达式
- 内联函数避免函数调用开销
- 循环展开
- 修改数据结构
- 调整数据结构
- 使用计算代替存储
- 稀疏数据结构
- 关键字索引
- 数据压缩
- 动态废品
- 垃圾回收
- KV对
- 注释文档
- 源代码描述
- 明白用户的真实需求
- 评估成本与收益
- 正确评估问题的难度
- 正确的工具