Skip to content

Latest commit

 

History

History
189 lines (125 loc) · 2.53 KB

编程思想.md

File metadata and controls

189 lines (125 loc) · 2.53 KB

编程思想

  • 编程语言
    • 语法
    • 数据结构
  • 编程模型
    • 面向对象
    • 面向过程
  • 编程思想
    • 契约编程
    • 设计模式

OOP

  • 封装继承多态

AOP

  • 静态接口
  • 动态代理
  • 字节码

批注 2020-05-13 154203

面向元数据编程

metadata

  • 泛型
  • 反射
  • 注解

函数式编程

  • 函数式接口
  • 默认方法
  • 方法引用

契约编程

  • 语义

设计模式

  • 最基本:23设计模式

面向对象设计模式,面向切面设计模式...

模式驱动

  • 接口驱动
  • 配置驱动
  • 注解驱动
  • 函数驱动
  • 模块驱动

领域驱动

批注 2020-05-27 105720

  • 解决的问题:系统规模日益变大

领域

业务问题模块

驱动

  • 驱动设计
    • 关注领域,而非细节
  • 驱动代码实现

实施

理解领域

  • 领域专家

拆分领域

细化子域

  • 标准
  • 业务规则
  • 业务场景
  • 业务流程

约束领域

  • 划分边界

调试

第一步:重现问题

第二步:思考原因

第三步:验证假设

如果无法确定问题,可以缩小范围

修复bug应了解其产生原因

抽象

抽象更接近问题的本质

  • 寻找共性
  • 提升抽象层次

分治

  • 函数分解
  • 优雅的代码不是一次写成的
  • 分治模式
    • pipline
  • 分层设计
  • 垂直拆分/水平拆分

编程珠玑

  • 灵光一现的算法

数据结构决定程序

使用更合适的数据结构能减少代码量

正确的程序

  • 断言
  • 测试

性能分析

  • 问题定义
  • 系统结构
  • 算法与数据结构
  • 代码调优
  • 系统软件
  • 硬件

估算

使用小实验获取关键参数

任何事都应尽量简单 但不宜过于简单

算法设计

  • 保存状态 避免重复计算
    • 动态规划
  • 对信息进行预处理至数据结构中
  • 分治算法
  • 扫描算法
    • 还是动态规划

代码调优

  • 不成熟的优化是大量编程灾害的根源
  • 需要有一个度量工具
  • 注意代码调优是一把双刃剑

一些优化方案:

  • 缓存
  • 等价的代数表达式
  • 内联函数避免函数调用开销
  • 循环展开
  • 修改数据结构

节省空间

  • 调整数据结构
  • 使用计算代替存储
  • 稀疏数据结构
    • 关键字索引
  • 数据压缩
  • 动态废品
  • 垃圾回收

自描述数据

  • KV对
  • 注释文档
  • 源代码描述

技巧

  • 明白用户的真实需求
  • 评估成本与收益
  • 正确评估问题的难度
  • 正确的工具