有兴趣的朋友可以先看上一篇文章,看完之后再看这篇文章会更加熟悉一些;上一篇梳理了整个的框架搭建,当然了都说不上专业,这些文章一方面是给自己看的,另外一方面如果你觉得有用那能帮到你那当然就更好了;
解决思路
框架梳理好了,说明这事情有个大体思路了,接下来就是慢慢踩坑了,因为我们知道,一个新产品开发出来,熟悉的部分是可控的,不熟悉的部分是不可控的,但是通常情况下不可控是一定存在的,不然我们也没必要在继续开发,直接拿来用就好了;
对于可控的东西我们自不必说,基本都是胸有成竹,没啥说的,主要的就是一些不可控因素,我们需要特别留意,因为这个直接关系到项目能不能按时交付,有没有可能开发出来;其实不管是对于开发人员本身还是管理层还是老板,基本都知道一个东西想要搞出来都不是那么容易的事情,唯一能做的就是尽可能的规避风险,这就像芒格老爷子说的:如果我知道一些路有问题,那我就不走这条路了;
比如在我要开发的这款报表引擎中,我需要面临的一些不可控因素主要来自两方面;
- 技术点的不可控,有些技术我并不熟悉,比如混合开发我基本没做过,h5我也没做过,echats我也没有用过,src数据库的架构我也不清楚;
- 开发事件的相对不可控,这个在开发中时常会有,比如我们公司我还需要参与代码维护,现场有了问题那我得顶上去,这会占用我的一些时间和精力;
实际上,第二个不可控因素比较好管理,这是一种通用的方法:1. 充分和上级沟通让,给他们尽可能地把一些不必要自己做的交给别人去做;2. 对于一些不必要的维护懂得说不;3. 预留一定的时间给代码维护,哪怕最终没有什么需要维护;
那么应对第一个不可控的方法,就是通过极简实现来完成,也就是说我先不大张旗鼓的搞,一定要搞得多么牛逼或者做的多么成熟多么漂亮,实际上在节点突破阶段强迫自己做得完美是我很不推荐的,那都是边边角角,是容易控制的东西嘛,显然在这个阶段不是工作的重点,又费时间;
节点梳理
先给技术节点排优先级,然后逐个突破;
节点突破有一个要领,首先对模块进行拆分,拆分到每一个模块我们都明确要干什么,要用什么技术去实现;其实我觉得做任何事情都是一样的原理,别人交代一个任务,或者自己给自己定一个任务,首先问清楚到底要什么,然后再搞明白这个东西里面的重点是什么,然后再思考我们要怎么做,最后才是开始行动,逐个突破达到目的,完成交付;
有很多人喜欢用计划赶不上变化来搪塞,我觉得这类人也没必要搞程序了,这类人最喜欢甩锅,通常什么事情都搞不好;
- 编写一个简单的混合开发应用
- 在安卓上使用echats生成简单报表
- 从数据库中读取数据使用echats生成报表到webview;
- 如何让Webview中显示多个图表,就像安卓的listview一样可以根据item个数显示图表个数并支持竖屏滚动;
- 抽取echats在安卓上使用的通用接口;
- 抽取用于生成echats接口的数据库查询接口;
- 编写简单的中间件整合echats指令和数据库查询指令;
- 未知,后面完善;
节点突破
做了节点梳理之后,我们就知道每个阶段需要做什么事情,由于我们把大模块拆分为我们能够理解的小模块之后,我们就能一个一个开始突破了,由于每一个节点都需要花费一定篇幅来讲,所以每一个节点的突破我都开一篇文章,我自己也在一个个突破中实践我的思路,一边写文章,一边做实现,完美;
首先制定阶段性计划
每个人的阶段性计划可能不太一样,要基于每个人自身情况考虑,但是有一点很明确,就是这个事情还是要做的,那么怎么做呢,我给出我自己的一些参考;
第一阶段: 尝试阶段
尝试阶段要解决的问题是攻破自身不了解的技术点,目标是实现一个最简单的原型(Demo);
Step1:列出陌生点:
- 不熟悉Echarts,不知道怎么用;(解决方法:试着使用修改官方的Demo);
- 不熟悉js脚本以及混合开发;(解决办法:试着开发一个最简单的混合应用,只要实现了混合目的即互相传参数并显示即可);
- 不知道怎么样从安卓java代码获取数据并动态加载到webView;(解决办法:参考网上示例写一个最简单的从安卓读取list数据并显示在WebView上的Demo,数据采用最简单的重复数据);
Step2:实现完整Demo
- 从数据库读取固定数据;
- 将数据封装并传入Webview显示;
- 适配不同数据到Webview,并排在一页上(可滚动,滑到相应位置在加载);
第二阶段: 架构阶段
Demo实现之后,对整体有了一定把握,不再觉得那么难了,这个时候需要考虑各个模块的架构设计,尽量使整个结构看起来互相独立又代码美观;
第三阶段: 编码阶段
做完整的实现,并尽可能的开发出优美的代码和高性能的应用;