Hellgate | 架构计划

2018-07-02  本文已影响0人  mrzhqiang

背景

前面已经讨论了文字页游的【准备工作】,接下来需要考虑使用什么样的架构,针对这种架构应该如何执行。也就是设计 系统架构,制定 进度计划

正文

系统架构

基本模式

此项目基于 Play framework 建立,因此也采用 MVC 的开发模式,将代码层次分为:模型、视图、控制器。

从 HTTP(暂不考虑 HTTPS) 的角度来说,每个会话都应该是异步的,而这也是 Play framework 的默认设计。

从每个访问接口乃至接口对应的方法来说,也应该是一种异步实现,这将需要我们努力维持底层的良好设计。

项目结构

Play framework 目前采用的是 ScalaSBT 构建工具,在 SBT 多项目构建 中,提供了很好的思路。

如图,这是大致的勾勒:

其中,util 对于项目来说不是很重要,但也不希望自己造轮子,于是一些第三方工具就放在这边。core 模块允许以阻塞的方式连接数据库和访问其他接口。service 必须设计成 纯异步 的工作方式,以备 rest 调用时,可以调度到不同的工作线程。framewrok 扩展了 Play 的一些特性,是对用户体验更好的优化。root 着重于渲染 Web 页面,不关心业务。

具体做法可以参考:Play 子项目教程

设计思路

一般来说,从整体到局部,自上向下的开发方式,可以很好的把控局面。从 HTTP 接口到控制器,再从控制器到服务,从服务到核心……这样的层层递进,以需求驱动设计,完全避免了对未知需求的过度设计。当然,这种方式有个很重要的前提:需求清晰,目标明确。

我们需要做的是一个文字页游,它有实物可以效仿:好玩吧-地狱之门

因此从接口入手,逐步分析它的结构、功能,这就像沙漏一样,从上方已有的 “沙子” 逐渐填满下方的空白。但这也意味着对整体需要有一定的把控,不能单单通过表面来演变内部细节,相同的地方需要抽象,特殊的地方需要实现,基于 Java 的接口而不是基于 Java 的类编程,这样便很好地移除了具体实现对程序的影响。

只要接口设计得当,未来即使需要改动实现,也不会造成代码的大幅度调整。

代码风格

好的代码风格意味着良好的可读性,通过阅读 okhttp 源码能够身心愉悦,那么如何拥有同样的风格呢?

下载 java-code-style 压缩包:

双击对应系统的脚本文件:

你便可以在 IDEA 中得到:

进度计划

开发流程

基于 git 版本管理,自然遵循着 git-flow 的开发流程。

  1. master 分支作为主干,它是 稳定的 版本。
  2. develop 分支作为成长,它是 开发中 版本。
  3. release/* 分支作为发芽,它是 测试中 版本。
  4. hotfix/* 分支作为痊愈,它是基于 master修复中 版本。
  5. feature 分支作为进化,它是 探索中 版本。

这五大分支可以规范开发流程,保证工作有序地进行。

版本计划

v1.0

这是最艰难的一个版本,千里之行始于足下,迈出第一步总是需要莫大的勇气。

1.0 版本之前,有一个小任务是要构建 通行证 体系,借着这个体系,打造一个类似暴雪 战网 的社交系统。当然,我们不会做得太复杂,有基本的功能就行,主要还是以 方便开发 为主。

v1.1

关注业务逻辑的时候,没有必要频繁调整界面,所以能简化显示就绝不多余优化。但用户体验绝对是最重要的,一旦完成核心业务逻辑,就必须转移关注点,花在 打磨界面 上的时间,必须是 代码逻辑 的两倍以上。

由于 v1.0 尚未开始,这里也无法说明太多,总之一切等 v1.0 结束,再开始计划。

v1.2

结合自己对游戏的理解,将一些元素加入进来,需要等 v1.1 结束,再开始计划。

v1.N

此处一片空白,有待 v1.2 结束,再开始计划。

时间安排

一般来说,不可能在上班期间进行开发,因此需要在休息时抽点时间,而自己并不善于维持长久的热情,可能会导致开发变得遥遥无期。

为了鞭挞自己,这里大致进行一下时间安排:

以上时间安排,统统建立在 有心情有热情有时间 的基础之上,当生活不美满时,顾不上兴趣。

总结

果然自己还是一时的热度,做了三五天的准备和计划,到当前这一步竟有些疲乏和不耐烦。

上一篇 下一篇

猜你喜欢

热点阅读