[tr=rgb(154, 205, 50)]为什么写脚本要先有一个框架
|
通常一个项目在不停更新迭代的过程中代码会越堆积越多,大量代码堆积在一起,不仅不便于阅读,也会极大的降低开发效率。
因此实际开发中,我们会把整个项目按照一定的规则和顺序分成若干模块,每个模块对应整个项目的一个面,通过模块化的方式来降低整个项目的复杂度,这些模块按一定规则集成后就形成了一个框架;比如我们想做个英雄联盟自动挂机的脚本用来出售,首先它就应该考虑兼容性的问题,所以首先应该自动统一设置好相应的游戏和系统选项,其次应该考虑它进入大厅后的一个操作,具体是要打什么模式(人机or统治)不同模式对应不同的战斗AI、自动出装等等,那么它的框架大致可以这么搭建
- 您所在的用户组无法下载或查看附件
图上的这些模块化后的功能模块,按照一定的规则整合起来就形成了一个基本的框架
[tr=rgb(154, 205, 50)]什么是模块化?
|
每个模块都是项目中的一个原件,通过原件的组合来形成整个项目,也可以通过多个原件组合成一个集成度更高的原件。
打个比方,我们可以把整个项目想象成汽车,则组成汽车的每一个零件都可以算是一个模块,而发动机、制动系统、轮子等部分则是由各个更小的子模块组合而成的集成度更好的模块。
- 您所在的用户组无法下载或查看附件
图上的这些子模块组合形成了可独立的功能模块
[tr=rgb(154, 205, 50)]哪些东西可以做成一个模块?
|
通用零件:
实现指定功能,拥有良好的适用性,大多数项目都需要,对应螺丝等标准件。
功能部件:
实现一系列的功能,将整个项目分割成几个内部访问不相干的部分,对应发动机等重要组件。
[tr=rgb(154, 205, 50)]模块应具备哪些特性?
|
1. 可靠性:
模块必须保证自身能够可靠的运行,模块化开发降低了模块之间的关联,但需要考虑上层封装的稳定性。
2. 能独立工作:
模块间没有依赖,可独立执行,这样可以避免常规开发中出现的牵一发而动全身的局面,能独立工作的模块还可以支持复用特性,让代码越写越顺,越写越快越敏捷。
3. 非全局性:
全局环境被污染是非常棘手的事情,很多难以调试的BUG经常是由这个原因产生的,当我们使用模块化降低整个项目复杂度的同时,也应该考虑到项目维护所需要花费的精力,如果值得,那么应该对每个模块细化设计,避免日后可能带来的维护问题,在这方面,坚决不用全局数据是最重要的。
4. 接口、功能、逻辑、状态:
模块的四大基本要素,功能、状态、接口反映了这个模块的外部特性,逻辑反映了它的内部特性。
5. 低耦合性:
耦合性指的是模块与模块之间的关联程度,在实际开发中可能遇到多种模块依赖情况,如果这种情况没有处理好,做成了表面上的模块化,不仅起不到降低项目复杂度的效果,反而会加长开发周期。
有时候我们不得不让模块间产生耦合,在这种情况下,应首选关联程度最低的方法(非直接耦合、数据耦合),并通过代码分层的方式进一步降低程序的复杂度。
- 您所在的用户组无法下载或查看附件
LOL基本框架里的部分模块的数据耦合
[tr=rgb(154, 205, 50)]什么叫代码分层? |
根据业务关联、功能甚至模块独立工作程度等因素对代码进行归类,从而使模块间的关联由混乱的图结构变为清晰的链状结构,这种操作手法我们可以称之为分层,事实上一个大型项目不进行分层,未来的维护会变得非常麻烦,这也是代码编写所需要具备的基本素质之一。
- 您所在的用户组无法下载或查看附件
我们之前举例的LOL基本框架也有相应的代码分层:
- 您所在的用户组无法下载或查看附件
LOL基本框架里的部分模块的代码分层
[tr=rgb(154, 205, 50)]我该怎样分层我的代码?
|
在多数情况下,对代码分层应考虑到项目的实际情况进行,这对于框架初学者来说很不友好,如果我们需要一个简单、便于控制的分层架构,大多数人都会推荐比较经典的三层架构。
三层架构指的是:应用层(表现层)→ 逻辑层(业务层) → 底层(数据层),应用层实现整体的封装和控制,逻辑层实现模块工作,底层则搭建了整个项目的基本运行环境和所需的函数。
三层架构可以很大程度上实现高内聚、低耦合的设计思想,也是目前的主流开发架构,显著降低不同代码层次间的依赖,在按键精灵中也很方便实施。
[tr=rgb(154, 205, 50)]框架到底是什么?
|
在软件开发中,框架指的是整个软件的组织结构,用于解决复杂的问题。他承担着将代码分组件抽象化的任务,并阐明整套系统的体系结构,各个组件间的工作责任、依赖关系、工作流程和协作方式等关联。
框架将软件分割为多个组件,并抽象化每一个组件,使整个项目易于理解,能够形成一副工作与组件依赖的图像,从而使开发更容易执行。被分散的组件也降低了开发难度,可进行多人协作开发。
框架也是自然进化中必经的过程,大多数情况下,我们所使用的框架技巧都是在开发过程中逐渐积累经验形成的,甚至每个人都可能有一套独特的稳定开发方案,框架这个概念本身就是抽象的,但对于程序开发而言他的地位非常重要,好的框架可以加快开发速度,又能显著降低维护成本。
[tr=rgb(154, 205, 50)]能不能举个例子具象化框架?
|
多数动物由骨骼、脏器、肌肉组成,对这些生物而言,骨骼可以理解为他们的框架,各种组件围绕着框架进行搭建,最终形成了这个生物的个体。
但我们不能照搬自然中常见的框架形式,对于动物来讲,他们的框架是根据自己的生存环境专门搭建的,但也可能造成在他们的环境改变时强烈的不适反应,在软件开发中,框架应该作为项目的稳固根基,让项目在这个基础上,稳定发展超越,而不是一种限制,将项目锁死在框架的范围内,这种对比我们可以理解为好的框架和坏的框架。
[tr=rgb(154, 205, 50)]说了这么多,框架到底有什么作用?
|
1.框架可以帮助开发者养成良好的习惯,并形成自己的开发风格,能避免停止开发一段时间后,自己看不懂自己代码的情况。
2.美如画的框架也可以方便他人阅读和理解自己的代码。
3.好的框架可以允许多人协作进行项目,并避免简单组合代码带来的海量BUG。
4.框架需要良好的管理思维和运营思维,这些思维正是部分程序员所稀缺的。
5.框架带来高度抽象的思维,有助于理解其他软件,甚至整个操作系统的运行机制,这些机制有助于使自己在技术方面获得突破。
今天关于框架的介绍就到这里了,可能比较多抽象的概念不好理解或者有更好的见解欢迎跟帖指出~
其他相关连院刊【院刊】-【201506期】如何养成良好的编程习惯~
【院刊】-【201408期】编写代码时,注释写还是不写
点此查看院刊总目录
谢谢大家阅读,记得给小编送支花花 ! 顺手点个赞