模块化开发.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模块化开发

模块化开发 前言本文我们将讨论一下模块化开发。这里提到了两个关键词:模块化和开发。模块化是本文将要讨论的核心。而对于模块化的对象,在这里我们主要针对的是开发,而不单单只是针对编程、设计或者管理等来阐述的,这样描述的主要目的是希望可以通过本文让处于不同岗位的开发人员在工作中的各个方面都能去进行模块化思考。由于笔者一直从业于游戏软件开发领域,所以本文中对模块化所举的例子、说明等,大多都是针对游戏软件开发的。何为模块化开发不知道您之前有没有在网上看过这个视频,视频的内容是一栋15层的宾馆大楼如何在7天的时间里拔地而起的。这段视频引起了国内外网友们的热议。在这段视频中,我们完整的看到这栋大楼如何一层一层的将架构搭起来,又一步一步的把内外填充好,最终完成整栋建筑。我对建筑行业完全外行,但如果跟我以前看到过的盖楼的方式上比较,从表面上我也看到了一点区别:过去我看到的盖楼过程是一点、一点建起来的,比如一块砖、一块砖的砌,一小块楼板、一小块楼板的灌注。在这个视频中我看到这栋大楼则是一块、一块的建起来的,一大块墙、一大块墙的拼,一大块楼板、一大块楼板的拼。也许这个视频就可以作为一个让人们对模块化产生直接认知的很好的说明示例。(图1. 7天建起了15层的大楼)?总的来说,模块化并不只是软件开发领域独有的概念,这个概念在很多传统行业中有着更深远的历史,比如建筑业、汽车业、计算机硬件业等等。并且,无论我们有没有仔细想过模块化这个概念,人类自古以来做事的方式一直都是按照这种思路来进行的,只是在不同阶段、不同条件下执行的方式、程度等有所不同。 这里是对模块化这个名词的一个基本解释:构建标准化的灵活多用的单元。我想给出这样的解释来说明何为模块化:1.?将大的个体分解成多个小的个体;2.?独立的、闭合的去分析处理这个个体和其与外界的关系;3. 将这些个体组织、集成为一个新的大的个体;4.?持续的、迭代的进行这个过程直至解决问题。什么可以被视为模块模块化的对象和处理单元都是模块,那都有什么可以被视为模块呢?也许这是一个既简单又复杂的问题,说它简单是因为它的概念很好理解,但应该去做到什么程度却又是一件有挑战的事情,如果处理的不是恰当好处就会让事情变得十分复杂而低效。但为了能有个直观的感受,我还是想举几个例子。在软件开发中,一个C++函数、一个C++类或者一个功能库都可以被视作一个模块;一款产品、应用或者工具也可以被视作一个模块;再放大并抽象一点说,一个游戏功能、项目管理中的一个用例也可以被视作一个模块;甚至项目中的一个小组、公司中一个部门也可以被视作一个模块。总之,理论上来说任何事情、事物都可以模块化的来看待,但我的忠告是不要做的太过、太抽象。软件开发中的几个示例下面给出几个更具体的示例来帮助我们更好的来体会模块化。从下面这几个示例中,我们可以感受到一个模块化的系统可能具有的一些特性。?基于组件的游戏对象系统我们先来看看“基于组建的游戏对象系统” ——一种组织、管理游戏中各种类型对象的技术或者设计。这个设计的大致结构如图2所示。它有什么样的特性呢?每个对象内部都具有比较完整的、通用的功能和属性用于它对自身的表述。对象大部分的行为都是在其内部进行的。对象之间的关系主要是通过消息这个简单的接口建立起来的。即便是直接的相互调用,它所提供的也是标准的、通用的接口,也就是说一个对象可以很容易的跟另一个对象解开关联、再和其它对象关联起来。(图2. 基于组件的游戏对象)?并行计算再让我们看看并行计算。为了提高处理能力,目前的处理器(CPU或GPU)都将多核作为其主要的解决方案之一。相应的,在(游戏)软件开发中,程序开发人员也都在努力的应用着这个特性来提高系统的处理速度。但同时多核也意味着要系统尽量去做并行的处理,这将大大提高程序逻辑处理和调试的复杂度。因此,对于并行计算来说,它天然的就对模块化有着很高的需求。例如:将一大批运算拆解为一个个能独立处理的单位,这样它们就可以被交给不同的核心去处理。尽量的减小各个单位之间的依赖或者对资源的共享,使得并行处理的单位之间的执行顺序不影响结果的正确性。尽量的减少或简化各个单位之间通信和交互,来降低逻辑上的复杂度或相互等待。?下面两个图示简要的展示了游戏系统在单核处理和多核处理上的不同。(图 3. 在单核上,资源是被顺序的使用的,逻辑也是顺序的执行的。)?(图 4. 多核时,同一个资源则有可能被不同核上的处理任务同时请求,不同处理任务之间也可能有逻辑上的依赖。)Visual Studio工程最后我们看看Visual Studio工程。绝大多数项目中的程序开发人员都会通过IDE去创建工程来管理项目的代码、属性和构建等,或者至少也会去创建make文件来描述项目的构建方式,比如C++游戏开发人员几乎都会使用Visual Studio C++工程来

文档评论(0)

cbf96793 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档