
软件构造的一些想法
入过栈你
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
软件构造第六章——面向健壮与正确的软件设计上
一.正确性与健壮性 健壮性:程序在用户非法输入下,非法环境下表示正常的程度,也可以叫鲁棒性。 面对用户输入错误时,要能提示错误,处理未期望行为,并且应该要显示有助于DEBUG的错误信息。 健壮性原则 1.伯斯塔尔原则:对自己严格,对他人宽容。 封闭全部细节,考虑所有情况。 正确性:程序按照spec执行的能力。正如第二章就说明的,spec是决定正确性的。 与健壮性对比 1.健壮性倾向于用户,容纳用户的输入错误。 正确性倾向于开发者,对不符合spec的输入任意处理。 2.健壮性倾向于对外接口,正确性倾向于对内实原创 2020-05-11 22:52:10 · 246 阅读 · 0 评论 -
软件构造第五章——面向可维护性的设计模式
一.五大设计模式原则 SRP:单一职责原则 OCP:开闭原则 LSP: 里氏替换原则 ISP: 接口隔离原则 DIP:依赖倒置原则 这些设计模式原则之前我的博客上应该都写过,上课的时候专门把五种SOILD组合在一起,面向软件维护。 二.面向可维护性的设计模式 1.面向可维护性的创建模式 创建模式解决的是软件运行中构建对象的问题,上次没有提过。 工厂模式 问题:客户端不知道...原创 2020-04-28 18:08:40 · 222 阅读 · 0 评论 -
软件构造第四章——委派,六种复用设计模式
一.委派的定义 委派的定义很简单,一个对象请求另一个对象的功能罢了。 就是自己不干活,而交给别人干,自己负责调度,负责管。委派本身在我看来并不强大,强大的是委派与继承的共用。 二.委派的分类 委派中A对象调用B对象,根据B对象的来源不同,可以分为不同的种类。 依赖:B对象是动态传入A,并且A不保存B对象。B对象只是与A的方法依赖。这是临时性的委派。 关联: B作为A的成员被保存。 关联分为两类:组...原创 2020-04-26 20:36:15 · 1233 阅读 · 0 评论 -
软件构造第四章——复用软件评价与开发
复用软件评价 一.什么是软件复用 1.面向复用性编程:开发可以服用的软件 2.基于复用编程:利用可复用的软件开发 开发可复用的软件会导致:开发成本高,泛用性强,性能好。 度量可复用性 1.复用的频繁程度 2.复用的代价程度 二.复用层面 1.源码级复用:对源代码进行复制修改。 2.模块层面复用:对已有的类进行复用。 继承与委托技术,扩展现有类 3.库层面的复用:API复用 库:提供一组类与方法 4...原创 2020-04-26 19:18:54 · 318 阅读 · 0 评论 -
软件构造——equals方法与hashcode方法
一.等价性 抽象函数AF:内部表示->抽象表示的映射。 我们可以基于抽象函数AF定义ADT的等价操作。 等价性是我们定义的自反,对称,传递关系。判断对象是否相等。 二.不可变类型的等价性 我们可以利用AF,若AF映射到的抽象值相等,那么我们就认为对象相等。 如果observer函数所提供的值相等那么也能判定相等。 不论哪种方式,我们都可以看出。等价和ADT内部实现无关都是在观察角度说明的等价...原创 2020-04-07 18:48:26 · 220 阅读 · 0 评论 -
软件构造第三章——ADT设计.方法规约
一.方法规约 程序写出来的目的1.给机器看,2.给人看。一个大型项目中一定有程序员的互相交流,而规约就是为了交流存在的。我们不可能考虑所有的情况,所以我们指定一些假设保证我们的程序正确运行需要的内容。我们需要做一些设计决策。为了交流这些东西,我们要书写规约。 规约是使用者与开发者之间的的契约,隔离了具体的细节,让客户端不了解具体实现也能正确调用方法。 二.为什么要写规约? 1.必要性:Bug来自与...原创 2020-04-05 18:01:42 · 360 阅读 · 0 评论 -
软件构造第三章——ADT设计数据类型
一.数据类型 正如老师所说,编程比作写文章的时候,数据就是里面的名词。但我觉得这么比喻有点儿不充分,我觉得文章本身就是一种数据类型,尤其像JAVA面向对象来说,把数据,操作,代码绑定的十分紧密。在现实生活中很难找到一个概念与现在我们要探讨的数据相区分,不如说这个概念就是现实世界本身。 我们定义数据类型就是一组值和其上能进行的操作。 而变量就是空间,可存储满足约束的值。 JAVA类型包括基本类型和引...原创 2020-04-05 16:52:50 · 303 阅读 · 0 评论 -
软件构造第三章——ADT的设计细节
一.回顾 上一篇我们说了ADT定义,应该遵循的一些原则,表示独立性,不变性,防止表示泄露。这回我认为我们侧重于ADT设计的一些具体内容。 二.RI与AF 一个ADT是定义在一组操作上的数据类型,操作有了以后,我们要实现rep,而rep是具体的,功能是抽象的。我们需要解释如何把具体的rep映射成抽象的表示。 我们把具体的rep值空间称之为R空间,把抽象的值称为A空间。 比如说:我们要表示一个小写字母...原创 2020-04-05 16:14:50 · 284 阅读 · 0 评论 -
软件构造第三章——ADT的设计综述
一.抽象数据类型 抽象数据类型是一种定义在操作上的数据类型。与以前的数据类型不同,ADT倾向于操作,而不是具体的存储逻辑。对于JAVA来说,就像LIST抽象接口,我们只需要存,取,索引操作,而对具体的链表还是数组很多情况我们不需要考虑。 二.ADT类型与操作分类 ADT设计中不可变类型与可变类型的决定,是很重要的设计原则。 可变类型要求提供改变数据值的方法(这个值请参考下文)。 不可变类型中不提供...原创 2020-04-05 15:39:53 · 397 阅读 · 0 评论