本次需求相较于上次的在线升级需求,属于是比较大需求,包含了UI、通信、配置修改等几个部分的内容,基本上涉及了项目的方方面面。 由于是在休假回来后接受的需求,因此在前期花了比较多的时间去熟悉代码、熟悉需求。 同时在本次需求还是有比较多的收获的。 从一个需求接手的三个方面来说一下收获。
前期熟悉:
要做到熟悉一个需求,个人认为要搞清楚几个问题: 1、需求目的是什么? 需求是为了解决问题,第一件事就是要搞清楚需求的目的是什么。 本次新乘风接入的需求为了实现动态生成表单,避免传统的表单固定后升级、更新较为麻烦的情况。 将表单的维护由Json数据 + 表单生成引擎来做。 采用抽象配置项方式,整体架构非常灵活,后续维护迭代成本大幅降低,乘风侧前后端无需代码变更,设备端更新代码完成配置即可。
2、需求怎么去做? 需求应该如何去实现?实现的目标是什么? 搞清楚这个问题之后,就能够真正掌握、了解这个需求的细节应该怎么去做,使用什么协议去完成,整体的通信链路是怎么样的。 本次需求的实现是采用Json做通信协议,与服务器之间建立webSockt,在webSocket中通过绑定后,完成后续的一系列通信工作完成动态表单的各个目标。
在本次需求的前期熟悉阶段自己没有做好的就是没有搞清楚这两个问题,导致在后续的开发过程当中始终感觉抓不到主线,导致一直没有很好效率去完成开发。
中期开发:
在实际上中期开发的过程中,前期熟悉的做的怎么样就很好的体现在了这一环节中。 由于自己在前期需求的熟悉阶段没有做好,导致自己在本次开发的过程中一直没有很好的把握整体,有种想到哪里做到哪里,没有准确、清晰的目标去走,导致自己经常会出现每次做完一部分后遍不知道下一部分在哪里的情况。 在开发的阶段,不应该急着去开发,而是要想明白、搞清楚自己要做的是什么,自己现在要开发的是哪一部份,这部分做完之后有什么改变,下一部分是什么?也就是要有清晰的整体意识,要搞清楚开发时的上下文关系,以后一定不能够出现这次的迷茫情况。 要花多点时间在前期设计上!
后期联调:
联调的过程中,自己最大的问题还是没有严格按照提供的文档来做通信。 由于本次的通信协议改动较多,经常会出现自己发送过去的实体Bean没有得到回应,或者得不到解析的情况。 对于这种情况,第一时间要做的事情还是确认实体Bean是否按照通信协议规定来做通信。 在联调的过程中要搞清楚每一个功能模块,以及功能可能的边界情况来进行处理。
收获总结:
1、需求开发之前一定还是要搞清楚需求。 2、Json的解析: (1) 对于字段是常量,会给字段赋予默认值,若字段是对象变量,若字段没有赋值就默认为空,可以利用这个特点来做多态化的字段Json解析。 (2) Double跟Integer不能够强转 (3) 对于递归的Json解析,可以使用JSONObject来解析所有的 {} 情况,使用JSONArray解析 [] 的情况。 3、对于复杂的Json生成,要问
|