软件设计:从专业到卓越
张刚
资深技术专家
374 人已学习
立即订阅
软件设计:从专业到卓越
15
15
1.0x
00:00/00:00
登录|注册

第 9 章 由外而内的设计(1)

设计和编码本是一体。由外而内的设计,也叫作意图导向的编程,是把设计的思考过程、编码实现过程以及演进式设计完美结合在一起的方法。熟练掌握由外而内的设计,可以大幅提升编码效率和质量。本章将介绍由外而内的设计。

9.1 如何由外而内

图 9.1 是一个关于由外而内设计策略的大致示意图。其中圆形代表实际的编码实现,弧形代表在前一步导出的接口,数字代表实现的顺序。
由外而内的设计包括如下几个步骤。
选择一个系统功能,或者需要探索的问题。
思考实现该功能或解决该问题,需要哪些更低层的模块,每个模块分别需要承担什么样的责任。
用在第 2 步假设的模块和责任完成编码,当然此时这些模块和责任可能并不存在。
逐个选择第 3 步中未实现的责任,把它作为一个新的待解决的问题,回到第 1 步。
为了更清晰地说明由外而内设计的具体做法,本节我们以俄罗斯方块游戏作为范例。

9.1.1 案例说明

俄罗斯方块(Tetris)是一个历史悠久的电脑小游戏。像我们这一代人(我是 70 后),小时候玩过的第一款电子游戏,大概率就是俄罗斯方块。1984 年,俄罗斯人阿列克谢·帕基特诺夫发明了这个游戏,它从此经久不衰,至今在休闲类游戏中仍然占有一席之地。
游戏规则
俄罗斯方块的规则非常简单,屏幕上方持续地产生不同形状的方块,玩家通过按键旋转方块或者调整方块的位置,让方块落到合适的位置,留下尽可能少的空洞。如果底部堆积的方块形成了完整的行,这些方块就可以自行消除,同时玩家会因此得分。消除的行数越多,对应的分数奖励就越高。
当然,如果方向和位置调整得不好,就会留下填补不了的空洞,形不成整行,没有消除掉的方块会不断堆积,越来越高。一旦堆积的方块到达屏幕顶端,游戏就结束了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了意图导向的编程方法,并以俄罗斯方块游戏为例详细阐述了该设计方法的步骤和应用。作者从整体架构出发,分层设计游戏逻辑,并用代码表达初始架构。通过引入接口和适配器模式,实现了游戏的初始化和方块的创建。强调了让游戏尽快运行的重要性,同时提倡逐步演进的设计理念。文章还介绍了如何在用户界面上实际显示方块,并逐步加入行为,完善游戏功能。通过实现moveDown方法,作者展示了如何用代码表达设计意图,以及如何继续由外而内的设计过程。由外而内的设计方式具有延迟决策、保证概念的抽象、避免过度设计等优势。此外,文章还介绍了由外而内带来的意图导向的编程、设计顺序和编程顺序的统一以及由外而内意味着随时集成等概念。最后,文章提到了测试替身的概念和价值,强调了测试替身在依赖解耦和自动化测试中的广泛应用。整体而言,本文通过具体案例生动地展示了意图导向的编程方法,对读者理解和应用该设计方法具有一定的指导意义。文章内容丰富,深入浅出,适合对意图导向编程方法感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件设计:从专业到卓越》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部