软件工程实践总结&个人技术博客
这个作业属于哪个课程 | 2021春软件工程实践|W班 (福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 进行课程回顾与总结以及个人技术总结 |
其它参考文献 |
课程回顾与总结
问题博客链接
https://www.cnblogs.com/huro/p/14441379.html
问题
- PSP 依赖于 数据,记录很难完整,怎么办?
通过平常查看汪老师在其他同学博客下的评论,我发现PSP 表格的记录表并不是固定的,可以根据项目的开发的不同设置不同的PSP表,记录的内容也不需要过于准确,只是在项目与项目的开发中可以观察PSP表格找出自己在哪些方面做得比较慢,以改善自己的能力。
- 是否可以使用 goto 语句?
这个问题,到现在我仍持有保留意见。实际上在实践中我完全没有用到 goto
语句。我认为 goto
语句始终不是一个太好的语句,会让代码的逻辑混乱,可以使用 if-else
去省略 goto
语句的使用。当然书中并未指明编程语言,或许在某些编程语言中使用 goto
是一个不错的选择,但是在目前我接触的语言中,goto
都不是一个很好的选择。
- 过早优化的问题
通过本次软件工程实践的冲刺阶段,我了解到优化应该有个度,一开始应该着眼于业务的开发,当然伴随着可以简单完成的小优化,但是不应该把优化当成一个特别重要的事情去做,因为这样可能会导致重心偏移,导致项目开发变慢,当然普通的优化也是需要做的,这样能保证最后回归测试不用做很多遍,当然在回归测试自动化,保持测试用例的前提下,过一遍似乎也不用太花时间。
- PM做开发和测试之外的所有事情?
通过本次软工实践中PM的工作以及自己长久以来对PM的认知,其实这个问题我仍然觉得书中描述的有误,除了开发和测试,还有美工,运营等等。我觉得PM的工作应该是协调项目进度,负责组员之前的沟通以及构造良好的交流氛围等等。
- 程序员不该等待设计师的图后再工作?
通过本次软工实践中的各个阶段的任务以及我对这个问题的了解,我认为还是要看情况,最好的情况肯定是设计师的图出来了再进行工作。因为很可能设计图在不断的变化,如果一边根据设计师的图一边做,很可能白做,另外没有设计师的图,也可能白做。当然在这个时候可以做一些项目架构相关的工作,也可以开发一些小工具。但是在纯粹的切图项目中,或许还是应该和设计师的图错开来做,设计师早一天,这样比较好。
原来的不明白问题
上述中,我提到2,4,5问题的意见仍然是与书中不太统一的地方,也不明确是否可能是书中疏忽了,还是我理解不到位。
新的问题
产生了许多技术的问题,但是暂无理论性的问题。如果作业要求可以包含技术性的问题,可以查看我在github上的issue提问的一个问题。
另外针对部分问题也进行了研究。例如 storage
能做什么存储之外的事情?
"做中学"
阶段 | 收获 |
---|---|
需求阶段 | 沟通的能力,需要与其他同专业同学进行沟通,发现市场需求。渠道有发布问卷和利用同学群等。 |
设计阶段 | 学会 Axure pro 原型软件的使用,比如插件的使用,下载了 antd 的相关插件,在之后的开发中与 antd 库一一对应,使开发变得更加轻松,也让原型更加美观了。 |
实现阶段 | 学会很多库的使用,也学会了整体的 React Vue 的开发流程,例如npm 上的比 moment.js 更轻量的日期库 day.js ,以及学到了 React 权限路由,利用 axios 进行请求拦截等技术,相信将会对未来的工作有不少的帮助。 |
测试阶段 | 学习了与 vue 以及 react 相关的测试工具的使用,例如 jest cypress 等工具的使用。在测试的时候也发现了许多自己写的代码的问题,体会到了测试的重要性。如果没有早些进行测试,缺陷的修复的代价是呈指数增长的。 |
发布阶段 | 学习了如何将项目进行打包,以及解决打包可能遇到的问题,使用 cross-env 这个库区分不同的环境,进行不同的打包。以及配置 publicPath 以及 nginx 进行文件的公有路径变化,进行请求代理转发到本地的某个端口上等等。 |
理解或心得
本次软工实践在技术上的收获有蛮多的,其实之前都比较喜欢用 React
进行开发,不过本次由于团队的技术栈比较偏 vue
,因此本次开发中深入了 vue
而且使用之前的架构进行开发,发现其实 vue3
也是挺好用的一个框架。之前对 vue
存在一定的误解。另外也学习了许多库的使用,例如 cypress
day.js
等等,让自己以后开发中的选择更加多了。如果只是单纯的个人项目或者结对编程,可能无法体会到整个技术栈需要进行更换,因此对于主流的技术,可能多多少少要进行一点接触是比较好的。
团队合作方面确实收获了不少,尤其是我是经历过换组的同学,因此我能更好的体会到如何在换组后快速的适应组内的环境,也能体会到不同的组不同的开发模式,也能体会到各种开发模式的孰优孰劣,实际上目前我认为比较适合的开发模式,应该是小组内的组员分工明确,并且每天都要进行站立式会议,另外开发应该是不断迭代的,虽然我们的开发类似于瀑布模型,但是在实现过程中却是慢慢迭代的,而且组员的分工明确,而且每天都按时完成任务,带来的是组内的氛围良好。
另外由于一开始是进行个人项目和结对编程,也能体会到,当团队人员变多,良好的管理和代码规范就显得非常重要,否则人多了反而会导致乱的出现。相比于结对编程的效率来说,个人项目的效率是最高的。实际上可能就是编程中的 1+1 < 2
吧。因为沟通也需要成本。
个人技术总结
学习路线
目标 | 完成情况 | 时段 | 详情 |
---|---|---|---|
熟练掌握 React 技术框架 | 完成 | beta 冲刺阶段 |
在使用中,主要进行 axios 进行请求拦截,显示相应的界面,使用权限路由进行路由安排,显示对应界面,使用 storage 记录用户登录状态等等。 |
熟练掌握 React 生态常用工具 | 完成 | beta 冲刺阶段 |
熟练应用了例如 react-redux dva redux react-saga redux-immutable antd 等 React 生态常用工具。 |
熟悉各种 Web 前端技术 | 完成 | 各个阶段 | 发表了许多博客,具体可以在我的博客列表中查看。 |
熟练掌握 JavaScript | 完成 | 贯穿各个阶段 | 主要看的网站是,https://javascript.info/ |
熟悉常用工程化工具,了解原理 | 完成 | github 实战,冲刺阶段 |
主要学习了 webpack 如何从 0 开始搭建一个项目,了解到 plugin 和 loader 的本质是函数和类。 |
技术问题
在开发中,我担任了开发的角色,解决了许多的技术问题。其中一部分问题如下。
less object is empty in CRA project
https://github.com/webpack-contrib/less-loader/issues/421
antd-vue 1.x 不支持 vue3.0
使用最新的 antd-vue 2.x
作为项目的组件库。
vue 3.x 不支持 * 号通配路由
https://next.router.vuejs.org/guide/migration/#removal-of-the-fallback-option
主题色覆盖失败
需要对 less
版本进行降级,降级到 5.0.0
以下的版本。
这些问题都被解决了,针对部分网上难以搜到的问题,也去 github issue
对作者进行了提问。