极客时间_软件设计之美 笔记

1.软件设计是什么

  1. 写代码前应该有模型设计

    • 比如mvc结构就是一种模型
  2. 代码应该有规范,

    • 产品内部原则 避免每个开发按自己的想法实现,有人写rest 有人写mvc
    • 代码模块原则 某段代码应该放在哪里,比如工具类放到ibase里的哪个模块的哪个包
    • 软件设计原则 比如 需要 防腐层 外部接收的json需要转换成内部对象,json解析器直接解析出来的对象有可能有大量附加信息占用内存。

低耦合高内聚

2.分离关注点

  1. 解决问题的思路 分而治之。

    • 分的要足够细,不要把问题混淆
    • 分解问题时候不是一个维度,业务维度、性能、异常情况等等。每一个维度是一个关注点
      • 动静分离
      • 读写分离
      • 高频低频分离
    • 业务处理和技术实现是两个关注点,不是所有问题都是技术问题,分层封装。

分离的关注点越多越好粒度越小越好。
CQRS

3. 可测试性

  1. 演化质量

    • 可测试性
    • 可维护性
    • 可扩展性
    • ···
  2. 设计时考虑可测试性
    • 不保证钢筋水泥的质量如何保证盖出来的大厦的质量。
    • 保证软件质量就要保证模块的质量就要保证每个类每个方法的质量
    • 有的类不好测试,说明设计时没有考虑可测试性
    • 有些设计模式就没有考虑可测试性,如单例模式。

4. 了解设计

  1. 从上到下设计

    • 先设计模型,这时候不应该含技术细节
    • 再根据模型设计接口,这时候不应该包含内部实现,特别对于使用三方工具最好进行包装,便于后续升级改造。
    • 最后设计实现
  2. 对于实现也需要设计
    • 一个类的数据结构 就是模型
    • 一个类的方法有哪些能力 就是接口
    • 方法怎么写用什么技术用什么算法 就是实现

极客时间_软件设计之美 笔记相关推荐

  1. 测试 极客时间_针对数据极客和记者测试DocHive

    测试 极客时间 呼吁所有数据极客和发烧友! 测试现已在DocHive 上开放- 从GitHub开始 . DocHive是一个开源的Ruby on Rails项目,用于从基于图像的PDF捕获数据. Do ...

  2. 极客时间--数据结构与算法之美

    一起学习

  3. 用户体验地图的一个不错的例子(极客时间用户体验设计课笔记)

    1 要根据用户不同的角色去划分用户体验地图 用户体验地图要和用户角色相对应 ,不仅要明确体验地图对应的目标用户,更要 明确目标用户下不同的用户角色,一个角色对应一份体验地图. 2  一个完整的例子:

  4. 《极客时间-技术管理实战》读书笔记

    外驱让我们可以做好本职工作,内驱才能让我们成就卓越. 做管理的基本认知: 更大的责任:更好的实现团队目标,基本体会不到行使权力的快感. 更立体的视角.考虑上级.下级.平级的期待和诉求,不能只是关心眼前 ...

  5. 极客时间MySQL实战45讲学习笔记

    零:基础 第一讲:基础架构:一条SQL查询语句是如何执行的? MySQL的基本架构示意图 1.MySQL基础架构 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接 ...

  6. 极客时间 - (应用层) HTTP2.0/QUIC 学习笔记

    HTTP2.0 HTTP 1.1 在应用层以纯文本的形式进行通信.每次通信都要带完整的 HTTP 的头,而且不考虑pipeline 模式的话,每次的过程总是像上面描述的那样一去一回.这样在实时性.并发 ...

  7. 极客时间和极客学院_极客奔跑

    极客时间和极客学院 I'm not a natural runner. I'm reasonably fit given that I spend most of the day sat in my ...

  8. 极客时间《软件工程之美》学完感

    最近花了将进两个多月的时间,把极客时间上的专栏<软件工程之美>专栏学完了,同时也把相应的配套书本 ,邹欣的<构建之法>,读完了.学完这个专栏,让我获益良多. 专栏<软件工 ...

  9. 设计模式之美-王争-极客时间-返现24元 限时优惠

    极客时间出品的<设计模式之美>由王争所作,王争是前Google工程师手把手教你写高质量代码 前Google工程师,<数据结构与算法之美>专栏作者.本专栏前Google工程师手把 ...

最新文章

  1. HTML5存储学习笔记(一)
  2. CCF NOI1040 除法游戏
  3. jqplot php,JSON的jqPlot
  4. python编程培训-马哥教育官网-专业Linux培训班,Python培训机构
  5. 2021年信息系统项目管理师考试大纲
  6. guava Lists.transform 踩过的坑
  7. MVC发布后项目存在于根目录中的子目录中时的css与js、图片路径问题
  8. C# Cache何时使用及使用方法
  9. 一种修复WSL下linux系统问题的方法
  10. MAC OS X 技术内幕 学习笔记之一 MAC OS的变迁
  11. 一个基于verilog的FPGA 的LCD 1602 显示程序
  12. docker镜像制作、数据管理
  13. 软件测试项目案例.pdf,最经典软件测试案例.pdf
  14. 十大排序算法Java
  15. PCM开发板模块实验指导--SPI读写PSRAM64实验
  16. 网站的服务器什么意思,网站服务器站点是什么意思
  17. 联想计算机如何会会出厂设置方法,联想笔记本开机方法 联想笔记本电脑恢复出厂设置方法...
  18. Github建个人静态网页
  19. 重启oracle服务后无法连接,解决oracle服务器重启之后连接报错的问题
  20. WebRequest、WebResponse的使用示例

热门文章

  1. 最新主流大数据技术分类大全(持续更新)
  2. Redis 进阶篇:发布订阅模式原理与运用
  3. idea常用快捷键图文_如何在Word中的自动图文集词条中添加快捷键
  4. 模运算——大整数取模、幂取模等
  5. 这个650万科学大奖来了!今年颁给谁?
  6. 基于51单片机的大棚环境土壤湿度光强监测系统proteus仿真原理图PCB
  7. NOIP复习篇———枚举
  8. 类设计者的核查表(转自C++rumination)
  9. 关于git和 github
  10. Linux知识入门(一)