结对编程--关于如何复用,经验教训不得不说的事
本次实验我与余晖使用java继续完善了出题系统包括UI显示和注册等功能。完成了所有要求,历时5天。数天之前我很难想象到我们可以完成这份任务。接下来是对这些天的开发做出最重要的总结。
我将分为三大部分做总结。其一为这次开发中较先进的,下次需要重视和保持部分。其二为较落后的,本次实验中耽误了时间或造成了错误的,需要改变的部分。
如何复用:
其实复用这一块主要取决于之前编写是否符合规范。各个模块的划分是否合理,各个组件的封装是否完善。起初设计时类似管道模式,没有考虑到后续会有类似C/S模式的情况,属于需求分析时对未知的把控失误。故在设计模式上没法通过在各个层级增加组件的方式实现对功能的拓展。好在模块组件封装完善。对文件的处理组件,对出题组件任然可以使用。
当然这部分主要是队友的工作,我只能简单的进行介绍。大体来说,之前出题的时候是没有考虑到需要判断对错的,所以题目怎样生成是没太大讲究的,而在考虑到判分后,需要加入审核模块,但是出题接口是仍然可以使用的,只是接口内某些部分的业务逻辑需要更改,再连上一个审核模块。我个人主要复用了各个模块的设计模式。比如出题模块,账号处理模块,虽然具体设计上仍然像新写一样,可复用不仅仅只是简单地,代码层面的复用,设计层面也可以有复用。这是本次设计中我的工作上与复用最密切的地方。
先进部分:
1:我和队友使用的是同一版本,版本较高(几乎是最新的了)的Java和eclipse,这为我们带来了很大的便利,我们可以兼容其他同学的代码:---某些小组由于版本问题低版本lib里没有高版本Lib里的一些东西,以至于在中后期对接的时候不得不重改或妥协。这是很浪费时间的,是要不得的。而且,使用较高版本的开发环境还有一个好处,可以安装更多的开发组件及sdk。这一点的好处会在后面总结。当然也可能有弊端,因为本次开发是没有面向客户的,客户用什么环境我们是不用管的。但,总的来说,权衡下来好处更多。


2:我们的设计时间非常充裕,和队友协商决定交给我来设计程序的框架。队友给了我很大的信任与时间。笔者大概使用了1个上午的时间构想+1个下午的时间做设计报告给队友,作为积极的回应。提前设计看似占用了很多时间,实际上好处特别多。本次·开发中便占用到三个好处:


I可以预开发,预体验一些开发工具或者预搭一些设计模型,如果与预期不合可以小代价抛弃,若与预期符合则可大大缩短开发周期。
II其二:整体设计,模块间的耦合度会被大大降低,每个模块功能明确,开发时不仅可以向目标一往无前,更可心无杂念,不用担心过多的其他事情。同时程序的可拓展性与可读性也得到了充分的保障。笔者在开发过程中有一个功能上的失误,在队友指出后很短时间内就在相应模块上进行了功能的完善。而队友的模块下有一处BUG存在,笔者发现后指出,队友很快定位到问题所在并进行了填补。
III两位的开发可以相对独立,比如笔者已经设计好了整体的UI,队友的短信接口才开始编写,但并不影响笔者对整个程序进行测试。
较为落后的:
1:受限于笔者的能力,第一次做这么大的设计,很多地方不够严格也没法考虑到全局。I,在成员属性方面:譬如,在开发过程中,笔者对JAVA回收的机制不够了解。笔者在对类存储,类属性存储(句柄)和值本身的存储所在位置没有弄清楚,总怕新窗口(对象)使用了旧窗口的值导致无法回收,从而在新建对象时总是迟疑,实际上不必多虑。传值无非有二,句柄或实值,使用实值便与对象脱离,使用句柄也可以回收。笔者错误的使用歪路将某些值设置为静态。实际上程序的拓展性是大打折扣的。

II, 在能用正则表达式简单解决的地方,使用了很一般的循环去判断。不仅开发效率低,程序效率也受到影响

2 受限于笔者的经验,很多工具是初次使用,工具的从试用到能用花费了很多时间。而且对笔者对工具环境的配置也并不熟悉,在错误的安装导致某些工具版本升级后花了一整天的时间进行整改。事实上笔者真正在开发的时间也不过1天半。这个时间耗费是很昂贵的。还有,某些地方其实出现弹窗更为合理,但由于笔者对整体窗口的位置无法把握,导致弹窗的位置出现的很是尴尬,不得不大费周章的新建窗口以达成目的。
总之,本次开发,基础的不牢固和个人的进步这对矛盾在本次开发中得到显现。值得担忧却也可喜可贺。

浙公网安备 33010602011771号