当前位置:网站首页>需求开发思考
需求开发思考
2022-07-04 18:32:00 【Nimrod__】
本次需求相较于上次的在线升级需求,属于是比较大需求,包含了UI、通信、配置修改等几个部分的内容,基本上涉及了项目的方方面面。
由于是在休假回来后接受的需求,因此在前期花了比较多的时间去熟悉代码、熟悉需求。
同时在本次需求还是有比较多的收获的。
从一个需求接手的三个方面来说一下收获。
前期熟悉:
要做到熟悉一个需求,个人认为要搞清楚几个问题:
1、需求目的是什么?
需求是为了解决问题,第一件事就是要搞清楚需求的目的是什么。
本次新乘风接入的需求为了实现动态生成表单,避免传统的表单固定后升级、更新较为麻烦的情况。
将表单的维护由Json数据 + 表单生成引擎来做。
采用抽象配置项方式,整体架构非常灵活,后续维护迭代成本大幅降低,乘风侧前后端无需代码变更,设备端更新代码完成配置即可。
2、需求怎么去做?
需求应该如何去实现?实现的目标是什么?
搞清楚这个问题之后,就能够真正掌握、了解这个需求的细节应该怎么去做,使用什么协议去完成,整体的通信链路是怎么样的。
本次需求的实现是采用Json做通信协议,与服务器之间建立webSockt,在webSocket中通过绑定后,完成后续的一系列通信工作完成动态表单的各个目标。
在本次需求的前期熟悉阶段自己没有做好的就是没有搞清楚这两个问题,导致在后续的开发过程当中始终感觉抓不到主线,导致一直没有很好效率去完成开发。
中期开发:
在实际上中期开发的过程中,前期熟悉的做的怎么样就很好的体现在了这一环节中。
由于自己在前期需求的熟悉阶段没有做好,导致自己在本次开发的过程中一直没有很好的把握整体,有种想到哪里做到哪里,没有准确、清晰的目标去走,导致自己经常会出现每次做完一部分后遍不知道下一部分在哪里的情况。
在开发的阶段,不应该急着去开发,而是要想明白、搞清楚自己要做的是什么,自己现在要开发的是哪一部份,这部分做完之后有什么改变,下一部分是什么?也就是要有清晰的整体意识,要搞清楚开发时的上下文关系,以后一定不能够出现这次的迷茫情况。
要花多点时间在前期设计上!
后期联调:
联调的过程中,自己最大的问题还是没有严格按照提供的文档来做通信。
由于本次的通信协议改动较多,经常会出现自己发送过去的实体Bean没有得到回应,或者得不到解析的情况。
对于这种情况,第一时间要做的事情还是确认实体Bean是否按照通信协议规定来做通信。
在联调的过程中要搞清楚每一个功能模块,以及功能可能的边界情况来进行处理。
收获总结:
1、需求开发之前一定还是要搞清楚需求。
2、Json的解析:
(1) 对于字段是常量,会给字段赋予默认值,若字段是对象变量,若字段没有赋值就默认为空,可以利用这个特点来做多态化的字段Json解析。
(2) Double跟Integer不能够强转
(3) 对于递归的Json解析,可以使用JSONObject来解析所有的 {} 情况,使用JSONArray解析 [] 的情况。
3、对于复杂的Json生成,要问
边栏推荐
- Leetcode fizzbuzz C # answer
- Some thoughts on whether the judgment point is located in the contour
- mysql中explain语句查询sql是否走索引,extra中的几种类型整理汇总
- Shell 编程核心技术《二》
- Niuke Xiaobai month race 7 who is the divine Archer
- Opencv functions and methods related to binary threshold processing are summarized for comparison and use
- Pytest 可视化测试报告之 Allure
- Qt实现界面滑动切换效果
- BCG 使用之新建向导效果
- 牛客小白月赛7 F题
猜你喜欢

大div中有多个div,这些div在同一行显示,溢出后产生滚动条而不换行

Upgrade the smart switch, how much is the difference between the "zero fire version" and "single fire" wiring methods?

The 300th weekly match of leetcode (20220703)

用实际例子详细探究OpenCV的轮廓绘制函数drawContours()

Pointnet/Pointnet++点云数据集处理并训练

92. (cesium chapter) cesium building layering

Bi skills - permission axis

Lenovo explains in detail the green smart city digital twin platform for the first time to solve the difficulties of urban dual carbon upgrading

勾股数规律(任意三个数能够满足勾股定理需要满足的条件)

abc229 总结(区间最长连续字符 图的联通分量计数)
随机推荐
kotlin 基本数据类型
Matrix flip (array simulation)
MySQL数据库基本操作-DDL | 黑马程序员
HMM隐马尔可夫模型最详细讲解与代码实现
QT realizes interface sliding switching effect
Comment utiliser async awati asynchrone Task Handling au lieu de backgroundworker?
牛客小白月赛7 E Applese的超能力
Oracle with as ora-00903: invalid table name multi report error
HDU 6440 2018中国大学生程序设计网络选拔赛
Shell programming core technology "three"
Explore the contour drawing function drawcontours() of OpenCV in detail with practical examples
HDU 6440 2018 Chinese college student program design network competition
线上数据库迁移的几种方法
牛客小白月赛7 F题
Shell 编程核心技术《二》
1011 World Cup Betting (20 分)(PAT甲级)
LM10丨余弦波动顺势网格策略
Qt实现界面滑动切换效果
Shell 编程核心技术《三》
C# 使用StopWatch测量程序运行时间