软件工程实践总结&个人技术博客

这个作业属于哪个课程 2021春软件工程实践S班
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 课程回顾与总结
其它参考文献 《构建之法》

第一部分:课程回顾与总结

1. 给自己的总结博客起一个有意义的标题。
答:软件工程实践的收获

2. 给出以前提问题的博客链接。
问题博客

3. 请尝试对自己曾经提出的问题进行解答,并阐明,是如何通过看书,实践,或者讨论弄清楚的。

4. 5个阶段中,每个阶段收获最大的知识或能力是什么?

需求阶段:在这个阶段,我们获得了老师对于评分系统的预想和期望,描绘了评分系统的双客户端的蓝图,并及时制止了一些不切实际好高骛远的想法。

设计阶段:这是我们没有做好的阶段,只讨论了大概,没有把接口的名称、功能、数据类型都详细地确定下来,导致后来对接地时候前后端想法不一、十分痛苦。这个阶段地最大收获可以形容为一次失败地教训吧。

实现阶段:实践阶段的最大收获是对Retrofit框架、Mvvm设计模式、与触摸事件传递机制有了更深的理解。

测试阶段:最大的收获是学会了单元测试的写法,养成了写单元测试的习惯,再也不会有单元测试无用的错误认知了。

发布阶段:看到评分系统的Android端和Web端可以按照理想的方式运行了,很满足很有成就感。

第二部分:个人技术总结

首先,我对Android开发的学习并没有明确的学习路线,基本是自己研究目前市场上流行的框架或技术。目前已经可以与后端合作,开发能够联网使用的Android端App。

然后第二个问题,这一次团队实践作业中,我在我的团队里担任了组长职位,并负责评分系统的Android客户端App的开发。在开发过程中,我独立解决了许多困惑我许久的问题。主要有:
① 为了方便统一管理作为用户登录凭证的token,学习使用了Retrofit网络框架的Interceptor拦截器,不过这样也产生了副作用:要保存token必须知道存放token的文件路径,而要知道文件路径,就必须使发送和接受网络请求的Client单例必须依赖Android的上下文Context,这会导致Client的实例不能灵活地在任何地方获取到,甚至可能导致内存泄漏。不过总体来说,让Client持有Application的引用减少了Context在各层调用之间的传递,提高了开发效率,是利大于弊的。

参考链接:https://www.jianshu.com/p/83caa619b219

② 为了优雅地处理网络返回的Json数据,学习并应用了Retrofit网络框架的CallAdapter和Converter;为了减少对null的判断,我最开始实现自己写的Result类的时候,是默认所有的数据类型都采用了Kotlin语言的非空类型,不过后端与我想的不一样,最终是我妥协了,老老实实判空。

这个没有参考链接,我是通过阅读源代码里的说明学会的。

③ 为了解决评分页面滑动条Slider与RecyclerView的滑动冲突(Slider的滑动事件在不该被拦截的时候被RecyclerView拦截,导致Slider的滑动十分卡顿),学习了View的触摸事件的传递机制,通过重写RecyclerView的onInterceptTouchEvent方法,完美解决了Slider滑动的卡顿问题。

参考链接:https://www.jianshu.com/p/982a83271327

当然这些只是令我印象比较深刻的几个部分,在这次实践课程里我还解决了许多困惑我很久的疑问,收获不少。

posted @ 2021-06-28 22:44  Scott233  阅读(71)  评论(1编辑  收藏  举报