读书笔记

第一部分 打好基础 Laying the Foundation
第一章 欢迎进入软件构建的世界 Welcome to Software Construction
什么是软件的构建
定义问题
需求分析
规划构建
软件架构 或者 高层设计
详细设计
编码与调试
单元测试
集成测试
集成
系统测试
保障维护
总结
软件构建是软件开发中唯一不可缺少的部分,也就是必须完成的部分
软件的构建主要包括:详细设计、编码调试、集成和开发者测试(单元测试和集成测试)
你对软件构建的理解程度决定 程序员的优秀程度
第二章 用隐喻来更充分地理解软件开发 Metaphors for a Richer Understanding of Software Development
第三章 三思而后行:前期准备 Measure Twice, Cut Once: Upstream Prerequisites
第四章 关键的『构建』决策 Key Construction Decisions
第二部分 创建高质量的代码 Creating-High Quality Code
第五章 软件构建中的设计 Design in Construction
第六章 可以工作的类 Working Classes:抽象是以简化方式看待复杂操作的能力
6.1类的基础:抽象数据类型 ADTs
ADT,abstract data type 抽象数据类型。它指的是一些数据及对这些数据的操作的集合。这里的“数据”,不仅仅是数学上或者软件工程中的数据,而是现实世界中可以操作的实体
ADT 的好处:
隐藏实现细节(可能会有后续操作)
容易改动(更改数据结构,优化提高性能)
让接口提供更多信息(通过名称)
可读性提高
不需要多次传值(相关操作需要用到变量都放在ADT里面了)
把常见的底层数据类型(栈 队列)创建为ADT并使用
如出场演员名单(底层数据类型是列表)

对于应用层面上ADT,最好在原有ADT的基础上创建一个针对现实世界问题的抽象层次。
简单的事情可以抽取成ADT(方便扩展后续操作)
在支持面向对象的语言,ADT可以用自己的class(类)实现。class=ADT+继承+多态
6.2良好的类接口:用接口去展示抽象,确保细节隐藏在抽象背后
接口中的每个子程序都朝着这个一致的目标而工作
类的接口要展示一致的抽象层次,一个类只能实现一个ADT,不然就要拆分
要理解类要抽象出什么功能,避免把使用的类库或者容器类暴露出来
尽可能让接口可编程(programatic,编译器强制要求),而不是表达语义(sematic,通过方法名和注释)。
比如多个类的初始化有先后顺序;一个类没有初始化调用会报错
扩展的时候要注意新增公用方法的 抽象的一致性
不要对类的使用者做任何假设,接口已经隐含了契约(接口已经提供了调用的条件说明)
语义上的封装比语法上的封装要困难(公用接口不要暴露内部实现和数据)
P142 很多例子
封装和抽象要么两者皆有,要么全部没有
6.3有关设计和实现的问题:包含/继承/成员函数/数据成员/类之间的耦合性
包含(has a “有一个的关系”):数据成员的限制:7-+2
数据成员都是基本数据类型,数据成员不超过9;数据成员都是复杂对象,数据成员不超过5
继承(is a “是一个的关系”)(使用时会增加复杂度,有违软件的技术使命-管理复杂度的)
要考虑方法和属性对派生类是否可见,方法是否要有默认的实现,是否可以覆盖?
继承要符合里氏替换原则:对于基类定义的接口,在派生类的语义应该是相同的
不要覆盖不可覆盖的方法(不要新建一个与基类的private相同的方法)
只有一个派生类,可能犯了提前设计的毛病
继承不要超过2-3层,派生类总数不超过该7+-2个;
尽可能让数据让数据时private,因为继承会破坏封装
如果多个类共享数据而非行为,创建这些类包含共用对象
如果多个类共享行为而非数据,在基类定义接口,继承基类
如果多个类共享行为和数据,在基类定义接口和数据成员,继承基类
当你想由基类控制接口时,用继承,由自己控制接口,用包含
成员函数和数据成员:
减少以下数字的数量
所实例化对象的种类
调用实例化对象的子程序的数量
调用由其他对象返回对象的子程序数量
子程序的数量
构造函数
尽可能在构造函数中初始化全部数据成员
6.4创建类的原因
对现实对象的建模
对抽象对象的建模(如shape就是抽象对象,得出恰当的抽象对象很重要)
降低复杂度(调用类的接口不用关心实现细节)
隔离复杂度
隐藏实现细节
限制变化的影响范围
隐藏全局数据
让参数传递更流畅
创建中心控制点
让代码重用
为程序族做规划
把相关操作放在一起(子程序的组合)
实现特定的重构
6.5与具体编程语言有关的问题
6.6超越类:包
类的质量核对表P157-P158
————————————————
版权声明:本文为CSDN博主「AaronChanFighting」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26958473/article/details/78494175

posted @ 2021-11-05 15:41  大风吹爱护  阅读(33)  评论(0编辑  收藏  举报