理想的设计特征

1 篇文章 0 订阅
1 篇文章 0 订阅
1.最小的复杂度

设计的首要目标就是要让复杂度最小。要避免做出“聪明的”设计,因为“聪明的”设计常常都是难以理解的。应该做出简单且易于理解的设计。如果你的设计方案不能让你专注于程序的一部分时安心的忽视其他部分的话,这一设计就没有什么作用了。

2.易于维护

易于维护意味着在设计时为做维护工作的程序员着想。请时刻想着这些维护程序员可能会就你写的代码而提出的问题。把这些程序员当前你的听众,进而设计出能自明的系统来。

3.松散耦合

松散耦合意味着在设计时让程序的各个组成部分之间关联最小。通过应用类接口中的合理抽象,封装性及信息隐藏等原则,设计出相互关联尽可能少的类。减少关联也就减少了继承,测试与维护时的工作。

4.可扩展性

可扩展性是说你能增强系统的功能而无无须破坏其底层结构。你可以改动系统的某一部分而不会影响到其他部分。越是可能发现的改动,越不会给系统造成什么影响。

5.可重用性

可重用性意味着所设计的系统的组成部分能在其他系统中重复使用。

6.高扇入

高扇入就是说让大量的类使用某一个给定的类。意味着设计出的系统很好的利用了在较低层次上的工具类。

7.低扇出

低扇出就是说让一个类少量或者适中的使用其他的类。高扇出(超过约7个)说明一个类使用了大量其他的类,因此可能变得过于复杂。研究发现,无论考虑某个子程序调用其他子程序的量,还是考虑某个类使用其他类的量,低扇出的原则都是有益的。

8.可移植性

可移植性是说应该这样设计系统,是他能很方便的移植到其他环境中。

9.精简性

精简性意味着设计出的系统没有多余的部分。一本书的完成,不在他不能在加入任何内容的时候,而在不能在删去任何内容的时候。在软件测试领域中,这一观点就更正确,因为任何多余的代码也需要开发,复审和测试,并且当修改了其他代码之后还要重新考虑他们。软件的后续版本也要和这些多余的代码保持向后兼容。要问这个关键的问题:“这虽然简单,但把它加进来之后会有损害什么呢?”。

10.层次性

层次性意味着尽量保持系统各个分解层的层次性,使你能在任意的层面上观察系统,并得到某种具有一致性的看法。设计出来的系统应该能在任意层次上观察而不需要进入其他层次。
举例来说,假设你正在编写一个新系统,其中用到很多设计不佳的旧代码,这时你就应为新系统编写一个负责同旧代码交互的层。在设计这一层时,要让它能隐藏旧代码的低劣质量,同时为新的层次提供一组一致的服务。这样,你的系统的其他部分就只需要与这一层进行交互,而无须直接同旧代码打交道了。在这个例子中,层次化设计的益处有:(1)它把低劣代码的烂泥塘禁闭了起来;(2)如果你最终能抛弃或者重构旧代码,那时就不比修改除交互层的任何新代码。

11.标准技术

一个系统所依赖的外来的,古怪的东西越多,别人在第一次想要理解它的时候就越是头疼。尽量用标准化的,常用的方法,让整个系统给人一中熟悉的感觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值