软件工程导论——结对编程回顾

结对编程需求及成果

用户注册功能

  • 手机验证码功能
  • 输入两次密码匹配后设置密码成功(密码6-10位,必须含大小写字母和数字)

修改密码功能

  • 用户在登陆状态下可修改密码
  • 输入正确的原密码,再输入两次相同的新密码后修改

题目参数设置

  • 选择小学、初中和高中三个选项
  • 输入须要生成的题目数量

答题功能

  • 生成一张试卷(同一张卷子不能有相同题目,题目所有为选择题,界面显示第一题的题干和四个选项)
  • 最后一题提交后,界面显示分数(分数根据答对的百分比计算)
  • 分数界面可选择退出或继续作题

以上需求均已经实现,结果图以下前端

 

 

 

 

 

 

 

 

技术选择及运行

前端主要使用的是ReactReact-RouterAxios三项技术构建的Web应用,后端主要使用Flaskreact

技术难点分析

主要的难点在前端路由的控制方面,前端路由的答题界面的路由应该是私有的,因此根据React-Router官方的建议咱们使用Render Props,对用户权限予以验证,具体的实现以下:ios

import React, {useContext} from 'react' import {Route, Redirect} from 'react-router-dom' import {UserContext} from '../utils/context' function PrivateRoute({component: Component, ...rest}) { const {user} = useContext(UserContext); return ( <Route {...rest} render={props => user !== '' ? ( <Component {...props} /> ) : ( <Redirect to={{ pathname: "/", state: {from: props.location} }} /> ) } /> ); } export default PrivateRoute;

我的项目复用性

本次结对编程,在队友代码的基础上进行需求的优化,队友的我的项目代码已经设计了UI界面以及登陆按钮,只须要添加注册按钮以及请求便可完成一个页面模板,整体来讲前端的复用性主要在页面的设计上,关于后端由于我的项目本地化处理的缘由,没有复用性
git

结对编程的收获

经验:个人队友是一个对于前端开发很是有经验的人,所以在结对编程过程当中,队友写出一个登陆页面以后,我模仿他的写法去编写注册页面的代码,对于react等技术也算有一些了解与使用,虽然使用的还不够熟练,但也算是提高了,此外因为没有开发经验,一开始我不了解那些软件开发的架构,看到队友的MVC模式有些不了解,经过百度等途径了解了一下软件架构,为之后的项目开发提供一些经验编程

教训:在开发过程当中一开始咱们两人之间的分工不够明确,虽然经过githup整理上传项目,但仍存在一方出现问题不能及时解决致使拖慢开发进度的问题,在后续的开发过程当中多进行两我的的面对面交流,开发过程一方遇到的问题也能尽快解决后端

相关文章
相关标签/搜索