代码大全--设计启发总结
来源:互联网 发布:方正证券交易软件 编辑:程序博客网 时间:2024/05/24 08:25
有人说经常写博客是自我提升的有效途径(前提是写有关自己想提升的相关内容),所以我也半信半疑的来试一下,如果是真的我一定会在第一时间与大家分享。之所以对《代码大全2》想写每章读后总结的触动是来自于想把自己的见解分享给想看这本书有没有时间或是没有这本书的童鞋们,在写这篇博客的时候是我已经看到了第六章了,所以想把第五章(软件构建中的设计)的总结写下了也就从这开始吧,如果有时间的话我会吧前面几章的总结不上来,如果有童鞋看后不同的看法、理解欢迎一起讨论交流。好了开始吧!
设计中的启发方式的总结:
一、寻找现实世界的对象(Object 物体对象 synthetic 人造对象)
如果您看过一本叫做《thinking in java》的书的话你一定会想到里面提到过的一句“一切皆对象”,可是这对于刚接触到“对象”童鞋来说这也太笼统了,我说说我对这个“对象”理解(只局限与我们计算机领域),“对象是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射”,通俗易懂。通常经验不足的朋友在设计中都会忽略“对象”的存在,一头就扎进与对象无关的盲目设计中,当我们理解了对象,设计中将对象理清,对象的属性,功能 都考虑周到了,在考虑对象间的关系时,就会觉得这是非常有必要的,这也正是寻找对象的关键作用。
使用对象进行设计的步奏如下:
1、辨认对象及其属性(method 方法 和data 数据)
2、确定可以对各个对象的操作
3、确定各个对象能对其他对象的操作
4、确定对象的那些部分对其他对象可见,那些部分可以是公开的(public),那些部分是私有的(private)
5、定义每个对象的公开接口
二、形成一致的抽象
抽象是一种能让你在关注某一概念的同时可忽略其中的一些细节的能力,在不同的层次处理不同的细节。其实人们一直都在使用抽象,比如当你把一个东西称为“房子”而不是由砖,瓦,玻璃等材料构成的组合体时,你就是在用抽象了。抽象其实也是一种化繁为简的手段。
三、封装实现细节
封装正好填补了抽象留下的空白,抽象是说:“可以让你从高层的细节来看待一个对象”,而封装说:“除此之外的其他层次细节就不能让你看见”。封装能帮助你管理复复杂度的方法是不让你看到那些复杂度。
四、当继承能简化设计时就继承
在软件设计中我们经常遇到一些大同小异的对象,这时继承就可以大显身手了,继承的好处在于它能很好的辅佐抽象的概念,继承能化简编程工作,它是面向对象编程中最强大的工具之一。
五、影藏秘密(信息)
信息隐藏中所说的秘密主要指两大类:
1、隐藏复杂度,这样你就不用再去应付它,除了你真的特别关心的时候
2、隐藏变化源,这样当变化发生时,其影响就能被限制在局部范围内。
信息影藏是软件的首要技术使命中格外重要的一种启发式方式,因为它强调的就是隐藏复杂度,同时她也是结构化程序设计与面向对象设计的基础之一,在面向对象的设计中她有引引出了封装和模块化的概念,并与抽象的概念紧密相关。
六、找出容易改变的区域
1、找出看起来容易变化的项目
2、把容易变换的项目分离出来
3、把看起来容易变化的项目隔离开来
下面是一些看起来容易变化的区域:
1、业务规则:业务规则很容易称为软件频繁变化的根源;
2、对硬件的依赖:主要指的是与屏幕,打印机,鼠键,硬盘等设施以及通信设计之类的接口都是硬件依赖的例子。要把这这些对硬件的依赖隔离在它们自身的子系统或是类中;
3、输入输出:在做比纯硬件稍高层次的的设计时,输入输出也是一个容易变化的区域;
4、非标准的语言特性:大多数的编程语言的实现都包含了一些便利的,非标准的扩展;
困难的设计区域和构建区域:把困难的设计区域和构建区域隐藏起来也是不错的想法,因为这些代码可能因为设计得差而需要重新做;
5、状态变量:状态变量用于表示程序的状态,与大多数其他的数据相比,这种东西更容易变化;
6、数据量的限制
很多时候我们更应该做的是提前预料道不同程度的变化。
七、保持松散耦合
在软件设计中我们长长听到一句设计规则“高内聚,低耦合”,没错,这是非常有必要的。耦合度表示类与类之间或是子程序之间关系的紧密程度。耦合度设计的目标是创建出小的,直接的,清晰的类或子程序,使他们与其他子程序之间尽可能灵活,这就被称为“松散耦合”。
我们常常遇见的几种耦合:
1、简单的数据参数耦合
2、简单的对象耦合
3、对象参数耦合
4、语义上的耦合
八、查阅常用的设计模式
设计模式精炼了众多现成的解决方案,可用于解决很多软件开发中最常见的问题。在23三中设计模式中常见的有:单例模式、工厂模式、观察者模式、适配器模式、装饰模式、代理模式等等。设计模式是一种强大的管理复杂度的工具,但我们在软件设计时要注意不能陷入“为了模式而模式”的坑里。
九、其他的启发式方法
1、高内聚性
2、构造分层结构(软件设计中非常有必要的设计步骤)
3、严格描述契约
4、分配职责
5、为测试而设计
6、避免失误
7、有意识的选择绑定时间
8、创建中央控制点
9、考虑使用蛮力突破
10、画图来帮助理解分析
11、保持设计模块
以上纯属个人理解总结,如有理解不到位,错误的地方欢迎指出。
- 代码大全--设计启发总结
- 读代码大全二笔记之关于设计启发得总结
- 从 越狱 和 代码大全 的启发
- 代码总结_味道与启发
- 代码坏味道与启发--《代码整洁之道》总结
- 代码大全总结
- 代码大全之架构设计
- 《代码大全》 高层次设计检查表
- html网页设计代码大全
- 面向对象设计启发规则
- 代码的味道与启发
- 检查表及总结 - 《代码大全》
- 代码大全第三章-总结
- 启发
- 模块化设计 (代码大全 第六章)
- 《代码大全》学习笔记(6):模块化设计
- [自习室]摘录代码大全:类的设计
- 代码大全2-软件构建中的设计
- 第十一周项目一——函数版星号图(2)
- 第11周项目 求最大公约数
- Linux scp 使用详解
- 【Git学习笔记】Git高级设置
- 函数版字母图
- 代码大全--设计启发总结
- Asp.Net上传带图片的Excel
- py2exe使用教程(四)——设置文件属性
- 第十一周上机项目一(3)
- libevent主要数据结构
- 11周(函数求最大公约数)
- pycharm快捷键及一些常用设置
- 元组在打印语句中的使用
- IE8下new date()的问题