结对项目总结

结对项目总结

软件1904陈啸天201926010407

1. 程序整体框架

  1. 目标:实现一个带UI的小初高数学学习软件
  2. 编程语言:Java
  3. 涉及技术:Java SE,Java Swing GUI,腾讯云短信jdk
  4. 源码结构如下:
    结对项目总结
  5. 上述结构,按功能分包
    1. main:界面的主框架,以及程序的入口
    2. model:实现各个功能的模块
    3. page:程序UI的各个界面
    4. tencentcloudapi:腾讯云短信相关功能

2. 关于复用个人项目

2.1 Paper类的复用

  1. 个人项目也写过Paper类

  2. 但当时功能更注重在指定文件夹下生成试卷文件

  3. 对于结对项目,这些功能被弃用

  4. 取而代之的是根据业务需求,补充了Paper类应该新增的属性和方法

  5. 如下是Paper类的一个构造函数,传入年级、数目,即可实例化一个相应年级的试卷
    结对项目总结

  6. 这就很好复用了个人项目中的代码以及思想

2.2 Question类的复用

  1. 个人项目中没有写Question类

  2. 但是有很多关于Question的方法,比如生成题目,添加括号等等

  3. 因为结对项目需求多,功能复杂,最终还是决定写一个Question类

  4. 并将个人项目中关于Question的方法,复用到这个类中

  5. 如下是Question类中生成题目主体的方法的部分截图:
    结对项目总结

  6. 类似还有很多方法,都是复用了个人项目中关于题目功能的函数

2.3 User类的复用

  1. 个人项目中有User类

  2. 但当时User类非常简单,仅有一个登录方法

  3. 结对项目功能需求复杂,不仅有登录,还有注册,还有各种验证

  4. 所以对于User类的复用,可以简单概括如下

    1. User类的一些属性:如用户名、密码、年级都保留了下来,但也新增了手机号这个属性
    2. 当然对于年级这个属性是可以不要的,但我没有代码洁癖,考虑到扩展性,便没有弃用
    3. 登录方法不好复用,只能重写,因为此时最好使用手机号+密码登录,并且需要进一步验证
  5. User类也新增了其他方法:

    1. 新用户注册
    2. 修改密码
    3. 强密码类型检测
  6. 如下是强密码类型检测方法:(Java正则表达式)(强密码必须包含大小写字母和数字)
    结对项目总结

  7. 总结来说,User类不仅仅是复用,更多的是依据需求,新增更多的方法

3. 功能测试

以下仅为基础功能测试,还有很多优化上的细节没有展示,比如对所有输入均有正则表达式的验证等等

3.1 注册功能

  1. 填写手机发送验证
    结对项目总结
  2. 收取验证码
    结对项目总结
  3. 填写用户名和密码
    结对项目总结
  4. 注册成功
    结对项目总结

3.2 登录功能

  1. 登录界面
    结对项目总结

  2. 登陆成功后界面
    结对项目总结

3.3 做题功能

  1. 做题界面
    结对项目总结
  2. 作答结束
    结对项目总结

3.4 修改密码

  1. 修改密码界面
    结对项目总结
  2. 修改失败
    结对项目总结
  3. 修改成功
    结对项目总结

4. 结对总结

4.1 经验

  1. 明确分工
    1. 此次结对项目,分工明确,我负责后台逻辑,张嘉嘉负责界面UI
    2. 相当于前后台分离开发,项目初期都可以相互独立编码
    3. 分工明确,耦合度低,大大提高了开发效率
  2. 及时沟通
    1. 虽然说前后台分离,不过一些需求界面和功能是不分家的
    2. 这时候就需要及时联络对方,弄清对方的设计与意图
    3. 印象较深的沟通点:
      1. 登录时,未注册账号登录前台重复提示的bug
      2. 题目数量限定范围,前台要给提示信息,后台要写逻辑判断,需要商定数量的取值
      3. 修改密码时,需要输入两遍新密码
      4. 等等
  3. 及时对接
    1. 即使前后台分离,互相提供API接口,也会有很多细节需要考虑
    2. 因为可能对接不上或者对接后出错,如果不及时对接,最后可能会延误工期
    3. 还好我们对接及时,虽然发现了很多问题,不过来得及修改
    4. 印象较深的如下:
      1. 前台接收密码时,给的API是字符数组类型,做正则判断时出错,需要转换成字符串类型
      2. 后台生成的题目,前台无法正常显示
      3. 后台用户信息如用户名在前台显示错误
      4. 等等

4.2 教训

  1. 编码风格要提前统一
    1. 我使用的是Google的java风格,而嘉嘉的风格并不是
    2. 对接时看她的变量方法等等,因为命名不符合规范,读起来没有语义性,不好理解
    3. 另一方面,缩进换行不统一,和我平时编程习惯有出入,也不是很舒适
  2. 一些问题需要提前商议,不能按自己的想法写
    1. 虽然前后台分离,不过一些功能或多或少需要前后台同时考虑
    2. 此时就不能按照自己的想法写
    3. 否则就是对接时出错
    4. 如输入题目数量,嘉嘉那边提示可以传399,我这边却校验只能接收1030,就有问题
    5. 如果提前商量好,就免去了后续修改的麻烦
  3. 互相要及时测试
    1. 通常旁观者清,写代码也是一样
    2. 我的代码在我看来没有bug,但在前台看来就可能有问题
    3. 互相测试代码,可以分别站在开发的不同角度寻找bug
    4. 测试不能拖,要么边开发边测试,要么开发完毕后立即测试

4.3 心得体会

  1. 结对编程是一次全新的体验,我收获很大,个人编程时我仅仅着眼于自己,不会去考虑别人,更不会想着会有一个团队。
  2. 而结对编程,就是一次小的团队合作,两个人就是一个团队。
  3. 此时,我就不能仅仅考虑自己,我还要考虑他人,我不能仅仅着眼于自己的技术,我还需要考虑他人的能力。
  4. 我擅长写后台代码逻辑,嘉嘉擅长做前台页面UI设计,正好依次分工
  5. 我们各有所长,各自发挥自己最大的长处,大大提高了整个项目的实现效率
  6. 当然,对我来说最大的收获是,我开始关注团队了
上一篇:Intelij Idea 配置leetcode


下一篇:Databingding基础使用入门