抽象化与逐步求精
软件设计的抽象原则是指,软件设计一般要自顶向下地经历一系列抽象级别从高到低的设计阶段,后续阶段会在前一阶段的基础上引进更接近于软件实现的设计元素,这一过程又称为“逐步求精”。
——《软件工程(第四版)》
对于游戏而言,一般我们不会对整个工厂进行自顶向下的设计——当然了,除非是老玩家,这里假定我们不是。为了玩得开心,更多时候我们是玩一点造一点,一个产线接着一个产线地造。因此首先考虑抽象原则如何使用在产线设计上。
一条产线当然有输入和输出,这是我们的“需求”,也是一条产线的最高层抽象。此时我们只关心它消耗的东西和产出的物品,如何排布组装机和传送带,以及效率如何,我们暂时不考虑。
同时也不难发现,模块化思想和抽象思想是有联系的——抽象思想强调“逐步求精”,强调设计的过程;模块化思想则强调“分而治之”,强调求解的方法。
光会用蓝图当然不够有趣,重要的是我们如何自己设计出简洁高效的蓝图。换言之,如何设计一个优秀的模块p>
高内聚低耦合
内聚度表示一个模块内部各成分彼此关联的紧密程度。
耦合度是指软件结构中多个模块之间的关联程度。
强内聚要求一个软件模块由逻辑相关性很强的代码组成,仅负责单项职责,这与通常所说的单一职责原则相吻合;松耦合要求软件系统中各模块尽可能独立地完成各自的职责,模块之间的接口尽可能少而且简单。
——《软件工程(第四版)》
内聚和耦合乍一听不知所云,解释一下还是很好理解的。对于软件工程来说,内聚耦合还有更加细分的内容,不过既然是谈游戏,也不做太多冗余解释。简单讲,一个模块完成的功能越单一,时间空间卡得越紧凑,这个模块的内聚度越高。比如,我们一般一条产线只产出单一产品,就是为了保证内聚度更高。而模块之间的交流越简单,它们的耦合度越低。比如我们一般会设计大容量的铁板、铜板总线,却不会为每一项中间产品单独设计产线并导出到总线,就是因为中间产品种类繁多,这样的设计会大幅度提高各产线之间的耦合度。
比如下面这个布局,冶炼的同时制造齿轮,功能不够单一;铁板走了一段无意义的传送带距离,浪费了时间空间,同样降低了内聚性,整个结构看起来散乱不宜整合,就是一个低内聚的模块。同时,传送带和电线杆的放置使得冶炼和生产的部分结构上强烈耦合在一起。这样的模块就算设计成蓝图,也不会实用。
值得一提的是,模块之间的耦合是不可避免的,低耦合低到什么程度也并没有明确的标准,“高内聚低耦合”的思想在实现时并不是死板的条条框框,可以根据具体情况具体分析。
那么一个良好的模块除了内聚和耦合需要考虑之外,还有什么特性是需要考虑的呢p>
开闭原则
开闭原则的内容很简单,即,模块要对扩展开放,对修改关闭。
大佬们的蓝图往往会强调“可拓展性”,这就是开闭原则的体现。以上面的红瓶产线为例,如果有一天我们发现红瓶的产能不够了,可以方便地进行复制拓展:
总结
其实玩游戏嘛重要的是开心~一定要笑着玩!
学到的思维可以在生活中玩耍,倒也不算浪费。
开始建厂吧!
另:本博客不是对软件工程概念的精确解释,运用难免有不严谨之处,想深入学习软件工程,请参阅专业书籍和教材。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!