HNU_结对项目_小中初数学学习软件(可视化编程)_总结与体会
前言
经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来。
问题(需求要求的😂)
Q: 如何复用个人项目实现结对编程项目?
A: 个人项目主要是分为核心的出题程序和简单的命令交互两个部分,我们在结对编程了调用了出题程序部分的代码,来完成我们的项目。
正文开始...
项目的开始到结束——初体验
一、初见需求
我们在看到需求后,首先先标记了需求内的主体需求点,如:GUI界面、用户提供手机号,点击注册将收到一个注册码,用户可使用该注册码完成注册等需求,共同确立了主要方向。我们一致认为,先完成主要功能,然后添加各种部件以及美化,但是初步GUI的设计框架一定要有一定的可拓展性,可以很好的容纳各种功能部件。之后,我们在UI设计上,集思广益,共同讨论,完成了如下的草图(包含页面跳转),并且明确了分工:HnuLyx主要负责内部运行算法方面的内容,我主要负责UI美化以及算法与UI拼接部分的工作,再由我们二人共同提出想法,分工完成。
值得一提的是,在开始前,我们没有立即着手制作UI以及编写算法,我们先对Java的UI类进行了重新编写与封装,形成了uiTools的package,方便复用,减少重复性的代码,极大的减少了工作量;同时,我们还共同注册了腾讯工蜂,以便对想法以及程序缺陷进行管理,制定时间点,里程碑,帮助我们完成项目。
二、开始合作
HnuLyx和我开始了高效率的开发工作,经常一起编程,遇到双方代码融合部分的bug,我们都会在一起进行交流,合作解决问题。期间,我们对如何能够高效的交流进度,解决问题进行了思考。为了解决同步性、协调性问题,在工作前,我们都会和对方说明目前的着力点,大概完成的时间,以及双方对某个功能实现时需要的数据类型,写好函数,便于开发调用。对于项目制作过程中的灵感与附加兴奋性需求,我们会进行备忘,放入工蜂中,然后着力开发我们的主体功能。对于当前的困难,进行针对性解决,利用工蜂里程碑,建立结点,体现编程合作的阶段性。并且共同约定命名方式,使用小驼峰命名法。
总体来说,我们在发现问题,研究问题,解决问题中学习,并且总结经验。
三、经验总结与反思
1.经验
(1)磨刀不误砍柴功
一定要先规划好框架,方向,定位,在开工,有规划,有阶段性的进行开发,才会更加有效率;对于技术而言,同样如此,要先了解JavaGUI可以干什么,有哪些好用的类与函数,然后再结合设计方案,进行开发,这样会使项目体验感,可操作性得到极大的提高。
(2)团结就是力量
过桥之所以不能齐步走,是因为大家在通过一个步调上;编程中想要快速实现功能,解决问题,需要结对的我们在同一方向上进行努力,解决问题,定期交流与阶段性交流可以有效的提高团队的同步性;其实,真正意义上的结对编程是用两人用一台电脑,轮流编程,在这个方面,我们积极运用在了解决问题方面,先将问题分享,说明逻辑,然后轮流解决问题,共同商议。
(3)个人解决问题能力
其实,GUI的实现需要很多函数来实现很多功能,面对想要添加但没有接触过的功能,我们如何解决?我们自己需要在不寻求他人帮助的情况下,能够独立解决问题的能力,上网搜索,看博客,查参考书,等等很多方式,都是解决问题的方法,这也是我们提高自己的有效途径之一
2.反思
(1)代码框架
敲代码,框架性很重要,这里的框架,包含了书写规范,定义规范,逻辑规范。我在编程中有一些复制粘贴的地方,总会出现遗漏的现象,为后期处理bug带来很多麻烦,主要在以后更加注重这方面的强化。在注释方面,进行了部分关键点注释,需要保持,并且要多参考优秀代码,学习其好的规范和算法,提高代码可读性。
(2)代码优化
编程中,有言:高类聚,低耦合。代码中有一些参数在调用时,往往一行要写很长,极大的影响了代码的可读性。对于涉及的框架设计,我们根据需要,建立了用户类,卷纸类等,帮助程序编写,但我认为,依然有很大的优化空间,需要日后积极学习,向优秀项目看齐。
四、分享
最后,在这里和大家分享一些资源,同时附上了本次项目功能说明的博客链接 HNU_小初高数学学习软件_功能说明 和 队友HnuLyx发布的博客(内含流程图) 结队编程总结分析 ,希望大家可以多多提一些建议,相互学习,共同进步。
Timer的定时调度函数schedule的四种用法(Java)