软件设计与模块化开发全面解析
1. 设计的角色与抽象层次
1.1 设计的定义与作用
设计是对实现的简化表示,能帮助开发者理解实现的结构和功能,而无需陷入细节。例如,在创建传感器数据过滤器时,设计应聚焦于过滤技术,而非循环中用于索引样本缓冲区的变量名称。
1.2 合适的设计抽象层次
合适的设计抽象层次因系统而异,理想的抽象层次能让问题更易理解。设计应避免那些对理解整体方法不必要的细节。比如,在设计一个对列表中所有数字求和的例程时,设计应关注“累加到运行总和”和“选择列表中的每个元素”等概念,而像使用 8 位还是 16 位整数作为循环计数器,以及数字相加的顺序等细节,虽在实现中必要,但通常不应出现在设计中。
判断抽象层次是否合适,可问自己:“这个细节对理解必须发生的事情是否至关重要?” 创建设计时的一个好方法是问:“我能否让这个描述更简单,同时仍能传达要点?” 设计不应与所使用的编程语言相关,若设计中出现变量名或代码行,可能已越过设计与实现的界限。获取良好设计的最佳方法是避免包含可执行代码。
1.3 直接进入实现的问题
若跳过设计直接进入实现,虽存在某种设计,但仅存在于开发者编写代码时的脑海中。开发者可能会将部分设计信息放入注释中,但这存在诸多问题。若设计未记录下来,阅读代码的人需重新在脑海中构建设计,这比查看书面设计更耗时费力。而且,不写下设计会错过在记录过程中发现问题的机会,很多时候设计模糊不清,将其写下来更易发现问题。
2. 模块化评估
2.1 模块化的概念
模块化的核心思想是将程序创建为一组构建块,组合这些构建块以形成