第四章: 模块化、保持清晰、保持简洁.
软件设计有两种方式 : 一种是设计得极为简洁,没有看得到的缺陷;另外一种是设计得极为复杂,有缺陷也看不出来,显然,第一种方式的难度要大得多。
模块化的原则: 要编写复杂的软件又不至于一败涂地地唯一方法,就是用定义清晰的接口把若干简单模块组合起来,如此一来,多数问题只会出现在局部,那么还有希望对局部进行改进和优化,而不至于牵动全身.
相对于其他,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程序,并讨论了错误处理、进程间通信(IPC)以及Shell脚本编写...
UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术 UNIX编程艺术
UNIX编程艺术 书签 无水印 中文版
根据提供的标题“Unix编程艺术中文版(非加密,带目录)”及描述“Unix编程艺术中文版”,可以推测这是一本介绍Unix系统编程原理、技巧和最佳实践的书籍。本书可能涵盖Unix系统的背景知识、核心概念、编程工具和技术...
6. **工具的可读性和可维护性**:Unix程序员注重代码的清晰度和简洁性,认为源代码应该是“可读的诗”,而非难以理解的谜题。 7. **利用层次结构的文件系统**:Unix的文件系统采用树状结构,将所有资源视为文件,...
此外,《UNIX编程艺术》还强调了模块化设计和软件工程原则,提倡良好的编程习惯和风格,这些都对提升代码质量至关重要。书中的实例丰富,每章都有详细的代码示例和实践练习,帮助读者巩固所学知识。 最后,书中...
Unix编程艺术.pdf
在Unix系统中,编程艺术不仅关乎编写代码,更是一种对效率、简洁和可维护性的追求。书中的主要知识点包括: 1. **Unix哲学**:书中强调了Unix的核心设计理念,如“做一件事,做好一件事”(Do one thing and do it ...
《UNIX编程艺术》主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S.Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为...
UNIX编程艺术-中文版UNIX编程艺术-中文版UNIX编程艺术-中文版
《Unix编程艺术》是一本由史蒂文·雷蒙德所著,专注于探讨Unix系统上编程的书籍。史蒂文·雷蒙德是开源软件的先驱者之一,也是著名的fetchmail程序的作者。Unix系统以其简单、高效和稳定闻名,从20世纪70年代诞生...
这一原则贯穿于整个UNIX系统的设计之中,从命令行工具到系统内核,无不体现简洁、模块化的思想。通过深入理解这一哲学,开发者可以更好地设计出与UNIX系统相融合的软件。 其次,书中讨论了UNIX系统中的文本流处理,...
Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术Unix 编程艺术
《UNIX编程艺术》是一本深度探讨UNIX操作系统编程的权威之作,中文版的出现使得更多中国读者有机会领略到UNIX系统的精髓。UNIX系统以其简洁、高效和强大的特性,深受程序员和系统管理员的喜爱,它不仅是一种操作系统...
尽管文档链接并未提供具体章节或内容概述,但从标题“UNIX编程艺术(中文)”以及部分描述中提到的“原来linux里面命令的输出能够成为另一个命令的输入”,我们可以归纳总结出一些关键的UNIX编程概念和技巧。...
卷2:进程间通信(第2版)》是一部UNIX网络编程的经典之作!进程间通信(IPC)几乎是所有Unix程序性能的关键,理解 IPC也是理解如何开发不同主机间网络应用程序的必要条件。《UNIX网络编程.卷2:进程间通信(第2版)》从对...
《Unix编程艺术》是一本经典的计算机科学著作,由著名Unix系统专家Eric S. Raymond撰写。这本书深入探讨了Unix操作系统的设计哲学、工具使用以及程序编写的原则和技巧,是学习Unix/Linux系统编程的重要参考资料。...