软件设计有两种方式:一种是设计的非常简洁,没有看得到的缺陷;另一种设计的极为复杂,有缺陷也看不出来。第一种方式难度要大得多。——C.A.R Hoare
更精练的表达:一种是明显没有缺陷;一种没有明显的缺陷。
要编写复杂软件又不至于一败涂地的唯一方法,就是用定义清晰的接口把若干简单的模块组合起来。这样一来,多少问题就只出现在局部,可以对局部进行优化和改进而又不至于牵动全身。
本章关注的是进程单元内的模块化。
1.1封装和最佳模块大小
模块化原则的内容:模块化代码的首要特质是封装。封装良好的模块不会过多的向外部披露自身的实现细节,不允许其他模块调用自身的实现代码,也不调用其他模块的实现代码,不会胡乱的共享全局数据。模块间通信通过应用程序编程接口(API)——一组严密,定义良好的函数调用和数据结构通信。
API是描述程序整体结构的重要部分,体现了模块间的通信。它定义了整个体系。
如何验证API是否设计良好?看你是否能对他表达清楚。
好的实践是,先定义接口,在实现接口。
缺陷的密度和模块大小的关系:
模块的逻辑行数成U字形分布,也就是,模块很大或者很小,缺陷的密度都很大。合理的逻辑函数在200—400之间。考虑到空行或注释,一个模块的合理大小约是400~800行。但是这只是一个参考。
原因是,模块越小,程序划分的模块越多,程序整体的复杂度在模块间交互上会很大。
模块越大,则一个模块内的复杂度越大。
另外,从系统的角度来考虑,首先应该对系统分层;分层之后,在每个层次,又可以分为多个协作的进程;每个进程内,又可以分为多个交互的模块。
分享到:
相关推荐
unix是什么,它是一个操作系统,汇聚了很多黑客的智慧,他是一个开放,自由,KISS,单一的系统 它包含了一些哲学基础 模块原则:使用简洁的接口拼接的部件 清晰原则:清晰透明,容易理解 组合原则:这个基于模块原则...
本书列出的条款涵盖了许多方面的主题,尤其对异常安全性、类和模块的合理设计,正确的代码优化,以及编写符合c++标准的可移植代码进行了深入的讨论。 《exceptional c++:47个c++工程难题、编程问题和解决方案...
SAP MM模块视频教程 入门版,内含学习视频
SAP MM模块视频教程 入门版,内含学习视频
SAP MM模块视频教程 入门版,内含学习视频
python基础教程-学习笔记:充电时刻——模块全文共13页,当前为第1页。python基础教程-学习笔记:充电时刻——模块全文共13页,当前为第1页。充电时刻——模块 python基础教程-学习笔记:充电时刻——模块全文共13页...
教育课件完美版
第一章UNIX操作系统概述 1983年AT&T发布UNIX System V,系统功能已经趋于稳定和完善,现在最后版本为System V Release 4 代表性UNIX版本: 1.System V Release 4 (SVRV) 小型机上、大型机上使用。 2.加州大学...
UNIX 编程艺术 章节 1.哲学 2.历史 3.与其它操作系统的对比 4.模块化 5.文本化 6.透明化
本手册同时适用于地理空间数据处理软件的入门用户和经验丰富的高级用户。本手册主要由 如下几部分构成: 第一章:绪论——介绍GDB技术和PCIDSK文件格式 ...第五章:附加模块——Geomatica其他工具模块
本文全面介绍了Python中的itertools模块,系统讲解了其中的常用函数分类及示例代码,并结合数据分析、数据生成、可视化等场景阐述了itertools模块在实际问题中的应用,内容结构清晰,既适合模块概念的学习,也可作为工程...
根据阮一峰博客中的相关文章学习js模块编程的笔记,如有疏漏,敬请谅解
Wlan 模块WM——G——MR——9,WLAN卡使用。
SAP ABAP开发学习——第11课:模块化编程1(视频教程) 1.SAP ABAP开发入门学习 2.含视频教程学习、PPT、作业 3.视频非常清晰
———————————————— 版权声明:本文为CSDN博主「高山流水123a s d」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:...
整理的所有乐高机器人EV3编程模块学习笔记,简单清楚方便记忆。
2.使用的模块 1)蜂鸣器模块。 2)LED模块。 3)DS1302。 4)独立按键模块。 5)数码管模块 2.蜂鸣器模块功能 1)负责闹钟时间达到时候发生警报,一分钟后主动停止警报。...2)开始调试闹钟时间的时候...————————
数据结构的课程设计,用C语言开发的手机通讯录
SAP ABAP开发学习——第12课:模块化编程2(视频教程) 1.SAP ABAP开发入门学习 2.含视频教程学习、PPT、作业 3.视频非常清晰