第四章: 模块化、保持清晰、保持简洁.
软件设计有两种方式 : 一种是设计得极为简洁,没有看得到的缺陷;另外一种是设计得极为复杂,有缺陷也看不出来,显然,第一种方式的难度要大得多。
模块化的原则: 要编写复杂的软件又不至于一败涂地地唯一方法,就是用定义清晰的接口把若干简单模块组合起来,如此一来,多数问题只会出现在局部,那么还有希望对局部进行改进和优化,而不至于牵动全身.
相对于其他,Unix程序员更加重视模块化、更注重正交性和紧凑性等问题。
封装和最佳模块化大小
模块化的首要特质是封装。
------- 封装良好的模块不会过多向外部披露自身的细节,不会直接调用其他模块的实现代码,也不会胡乱共享全局数据.
模块之间通过API和数据结构进行通信.
检测一组API是否设计良好,你可以:
尝试用人类自然语言来描述,是否可以把事情说清楚?
模块分得越彻底,就意味着每一块就越小;
当然,模块化代码也不可过于小;
模块过小时,几乎所有复杂度都在接口;想要理解任何一段代码前,必须理解全部代码,因此阅读代码非常困难
Hatton的经验数据表明,200~400之间逻辑行代码是模块设计的"最佳点"
紧凑性和正交性
紧凑性就是一个设计是否能进入人脑中特性。
检验一个设计是否紧凑的方法是: 有经验的用户通过需要操作手册吗? 如果不需要,则设计就是紧凑的。
紧凑的工具和顺手的自然工具一样: 让人乐于使用,不会在你的想法和工作之间格格不入。
正交性是有助于使复杂设计也能紧凑的重要特性之一。 既: 每一个动作只改变一件事,不会影响其他。无论是什么系统,改变每个属性的方法只有一个 。
比如显示器,改变亮度而不会影响对比度。
模块式编码
模块式,模块式,那么改如何做?
编写代码之前,问问自己以下问题:
1.有多少全局变量? 全局变量对于模块化是毒药,很容易使各模块化轻率、胡乱地相互泄漏信息。
2.单个模块大小是否在Hatton的最佳范围之内? 如果不是,超过就可能产生长期的维护问题。
3.模块内的单个函数是否太大了? 这不是一个行数计算问题,而是一个复杂性问题。 如果不能以一句话来简单描述一个函数与其调用程序之间的约定,这个函数可能太大拉。
4.代码是否有内部API---好的API应是意义清楚,不用看具体如何实现就可理解的,不确定? 那么你打电话给另外一个程序员描述,如果说不清楚,那么API就可能过于复杂了.
5.API的入口是不是超过7个?有没有哪个类超过7个方法,数据结构的成员是不是超过7个?
6.整个项目中每个模块的入口点数量如何分布?是不是均匀?很多入口点的模块真的需要这么多入口点吗? 记住: 模块复杂性往往和入口点数量的平方成正比----这也是简单API优于复杂API的另一个原因.
分享到:
相关推荐
UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术
UNIX编程艺术 书签 无水印 中文版
Unix编程艺术中文版
《UNIX编程艺术》主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S.Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为...
UNIX编程艺术-中文版UNIX编程艺术-中文版UNIX编程艺术-中文版
Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术
unix是什么,它是一个操作系统,汇聚了很多黑客的智慧,他是一个开放,自由,KISS,单一的系统 它包含了一些哲学基础 模块原则:使用简洁的接口拼接的部件 清晰原则:清晰透明,容易理解 组合原则:这个基于模块原则...
UNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdfUNIX编程艺术(中文).pdf
UNIX编程丛书:介绍参照百度百科 Unix编程艺术 Unix环境高级编程(第二版) Unix网络编程(第二版)
卷2:进程间通信(第2版)》是一部UNIX网络编程的经典之作!进程间通信(IPC)几乎是所有Unix程序性能的关键,理解 IPC也是理解如何开发不同主机间网络应用程序的必要条件。《UNIX网络编程.卷2:进程间通信(第2版)》从对...
unix 编程艺术(英文版),一本介绍UNIX哲学的经典文档
UNIX编程艺术(中文),UNIX编程就一门哲学,更是一门艺术
unix 编程艺术
unix编程艺术(带目录高清版本),高清原版,unix编程艺术(带目录高清版本),高清原版
unix编程艺术
Unix编程艺术(The.Art.of.Unix.Programming)
Unix编程艺术Unix编程艺术Unix编程艺术Unix编程艺术Unix编程艺术Unix编程艺术Unix编程艺术Unix编程艺术
UNIX环境高级编程第四章总结,记录所讲到的函数的原型,返回值等