文章目录

  • 前言
  • 1、《简约之美:软件设计之道》
    • 1.1 软件设计的准则
    • 1.2 小结
  • 2、《软件设计精要与模式》
    • 2.1 软件架构
    • 2.2 软件设计
    • 2.3 软件设计模式
    • 2.4 通用(其他)
    • 2.5 面向对象
    • 2.6 面向对象设计原则
    • 2.7 封装变化
    • 2.8 体验重构
    • 2.9 测试驱动开发
    • 其他
  • 3、《程序员必读之软件架构》
  • 4、《LECTURE NOTES ON Course Code》
  • 5、《华为软件编程规范总则》
  • 小结

前言

创作开始时间:2021年7月30日16:21:49

想系统学习一下软件设计(设计模式,架构,重构等等),所以看了几本相关书籍,并在此记录读书笔记。

1、《简约之美:软件设计之道》

  1. 软件设计不算科学(科学是必须能够分类的)
  2. 软件设计的目标是提高效率。
  3. 为什么计算机这么容易出问题?(崩溃、死机等)这一切与复杂性有关。不仅是软件复杂的问题,还是因为计算机本身就是复杂的。

1.1 软件设计的准则

  1. 不要编写不是必需的代码,并且要删除没有用到的代码。
  2. 设计程序时,应该根据你现在确切知道的需求,而不是你认为未来会出现的需求
  3. 仅仅根据目前确知的需求来考虑通用。

渐进式开发和设计可以实现上面三个准则!
顺序化开发,分而治之。


4. 简洁是相对的。
5. 代码保持一致。(如命名都用下划线写法)
6. 可读性。包含:命名,注释。

1.2 小结

2、《软件设计精要与模式》

2.1 软件架构

软件架构的定义:

软件架构包含:

  1. 程序组织 (封装,抽象,分层,领域模型)
  2. 数据设计
  3. 安全性
  4. 性能
  5. 可扩展性(如面向对象 OOP)
  6. 可靠性
  7. 可用性

2.2 软件设计

软件设计的原则:

极限编程。

2.3 软件设计模式

23种设计模式。

2.4 通用(其他)

  1. 没有及时的更新文档有时候比没有文档给项目带来的负面影响更大
  2. 测试驱动开发
  3. UML

2.5 面向对象

  1. 核心三要素:封装,继承,多态
  2. 封装:数据的合理隐藏和公开
  3. 继承:重用和抽象的基础。极大减少代码冗余。
  4. 多态:有机地将封装(定义对象类型)、继承(定义不同类型之间的关系)和抽象(提供对象多态的能力)结合起来。

2.6 面向对象设计原则

  1. 单一职责原则(高内聚,细粒度)
  2. 开放封闭原则(对扩展开放,对修改封闭)(比如函数的参数是类,而不是基础类型)
  3. liskov替换原则(继承体系的规则,父类的功能子类都要有,完全遵循。)
  4. 依赖倒置原则
  5. 接口隔离原则(使用多个专门的接口)

2.7 封装变化

  1. 访问者模式,保证可扩展。

  2. 工厂方法模式

我的理解:以上实际上就是接口的使用,继承的使用。

  1. 后面还有很多,都看不懂了。先不记录。

2.8 体验重构

  1. 职责分离
  2. 引入基类(抽象类,不需要实例化)
  3. 引入设计模式

2.9 测试驱动开发

TDD

其他

还有很多章,不看了,差不多可以了。

3、《程序员必读之软件架构》

随便过了一下,感觉目前不太需要。

4、《LECTURE NOTES ON Course Code》

看上去还行,先余着。

5、《华为软件编程规范总则》

还是挺有参考价值的。对代码效率,变量、结构等都有相关指导。

小结

创作结束时间: 2021年7月30日18:28:09

终于看的差不多了。后面有机会再补充。

【软件设计】5本软件设计书籍的读书笔记相关推荐

  1. 软件项目管理0718:读一页项目管理读书笔记

    软件项目管理0718:读一页项目管理读书笔记 1.项目经理沟通技巧分成三种类型:(1)对上:与高层监督和管理者之间的沟通.(2)下:与下级之间沟通:(3)外:和同事.同伴.同级别之间的沟通,再组织层级 ...

  2. 《自动控制原理与设计(第5版)》读书笔记

    Franklin G F . 自动控制原理与设计: 第5版[M]. 人民邮电出版社, 2007. <自动控制原理与设计(第5版)>读书笔记 文章目录 <自动控制原理与设计(第5版)& ...

  3. C语言书籍阅读-读书笔记--高质量程序设计指南》--C/C++,林锐

    最近闲下来想找机会参加一些编程比赛锻炼锻炼,可没有一个相关网站可以搜集这些信息,因而自己记录下来: 百度之星,http://star.baidu.com/index/developer.时间07.25 ...

  4. 响应式Web设计:HTML5和CSS3实战(读书笔记)

    视口:浏览器窗口内的内容区域,不包含工具栏,标签栏.网页实际显示. 屏幕尺寸:设备物理显示区域 各种宽度和高度a.可视区的真实宽度和高度document.documentElement.clientW ...

  5. PPT设计思维(邵云蛟)读书笔记(一)——形状的功能及字体选择

    一.PPT设计工作前的内容梳理 1.确定场景 在设计PPT前要确定ppt目的及使用场景. 使用场景一般分为两大类,第一类是演讲型(ppt美观性突出,配合演讲人演讲) 第二类是阅读性(行业分析报告等,发 ...

  6. 操作系统-精髓与设计原理(第六版)读书笔记

    本书封皮如下: 在china-pub上买了这本二手的操作系统精髓与设计原理,书很新,不过也不算厚,这和高教版那本操作系统概念显然不算是同一个类型的,讲的概念也都是一笔带过,没有做过多阐述,所以其实本书 ...

  7. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  8. 《Linux内核设计与实现》 第五周 读书笔记(第十八章)

    第18章 调试 20135307张嘉琪 18.1 准备开始 18.2 内核中的bug 内核中的bug多种多样,它们的产生可以有无数的原因,同时它们的表象也变化多端,从明白无误的错误代码(比如,没有把正 ...

  9. 大数据之路读书笔记-10维度设计

    大数据之路读书笔记-10维度设计 文章目录 大数据之路读书笔记-10维度设计 10.1 维度设计基础 10.1.1 维度的基本概念 10.1.2 维度的基本设计方法 10.1.3 维度的层次结构 10 ...

最新文章

  1. LeetCode简单题之寻找数组的中心下标
  2. LAMP架构介绍、MySQL和MariaDB介绍、MySQL安装
  3. jupyter 显示全部数据
  4. Policy Optimization-强化学习业界手册
  5. 深度学习(二十三)——Fast Image Processing, SVDF, LCNN, LSTM进阶
  6. SAP UI5 enhancement on resourceBundle
  7. (NO.00004)iOS实现打砖块游戏(八):游戏中小球与砖块的碰撞
  8. WINCE应用的UI实现方案
  9. tex文件用什么软件打开_pdf怎么打开?用什么软件打开pdf?
  10. 【redis】Redis简介
  11. redis内核单元测试框架
  12. win10 把软件窗口背景设置成豆沙绿
  13. python如何表示正整数_python中正整数
  14. 74HC573的使用方法
  15. Java将汉字转为拼音
  16. 洗牌 --网易有道2017内推编程题
  17. java校验集装箱柜号是否正确
  18. 数学基础task04 一元函数微分学的几何应用
  19. 1、登录——邮件发送激活链接
  20. EclipseSVN更新和提交

热门文章

  1. 人机交互与计算机科学,阐述人机交互方式的变革引领计算机科学的发展
  2. MySQL数据库课程设计_Wincc实现与数据库的交互以及报表的实现方式
  3. 用友t3服务器地址在哪里修改,畅捷通T+pos端后续想更换服务器地址链接,怎么操作?...
  4. linux与RMB的关系,linux mb()/rmb()/wmb()
  5. java 时间间隔 工作日_计算Java中两个日期之间的工作日数
  6. Unix File Permissions ACLs in OS X(part 2)
  7. Spring Security # ACLs
  8. 初中信息技术说课稿_小学信息课说课稿范文(精选6篇)
  9. Linux虚拟机遇到的一些问题
  10. 电阻、电容和电感的选型及作用