结对编程的感想(殷鹏程,谷骞,陈宇宁)
其实在这之前也有过合作编程的经历,但是数量非常之少。这次结对编程对我们而言不仅仅是一个任务,而且是一次不寻常的体验。两个人合作和自己独立完成任务是很不一样的,更何况由于我们小组的特殊性,任务是3个人在做呢?
首先介绍下我们3个人的性格及特点吧,
组长殷鹏程,俗称殷神。专业技术自然是灰常强悍的,而且涉猎比较广,也自己设计过不少应用程序,总之是一众凡夫俗子膜拜的对象。唯一的缺点嘛就是最近在考GRE,时间少了点。
组员Highestop(陈宇宁),字体那是写的不是一般的工整,不信你看他作业,比印刷体还印刷体,比较擅长整合各种图形,这样的特质很适合做UI的有木有,此外思考的时候他也能给出很多不一样的点子。
组员Fantasy(谷骞),就是本人啦,除了能想算法,能建下模,能写一些函数代码,好像没啥子优点了。好吧,再提点远古时期的事,高中得过PASCAL的省奖。缺点那一大堆咯,各种不细致,没耐心,技术差,等等等等。
最后实际操作的时候,分工跟预想的并不完全一样,我们三个首先讨论出了具体的数学方法,认为这是一个针对随机过程的非常优秀的算法,缺陷是是最后并没有分上下班高峰期,如果改进的话程序效率将提高非常之多。随后算法的主要代码是我和殷神完成的,其中核心代码是殷神完成的,比例数的最终确定是我测试的,UI的设计和嵌入是我和Highestop共同完成的,UML生成是Highestop同学做的。其余的各种文档和附加题各有分工,有些是随性写的,就不一一细说了。
谈下结对编程的优缺点吧,首先说优点。第一,可以发散思维,三个人一个小时能讨论出来的东西,或许一个人一个星期都没法想出来。第二、可以减少代码复审率,当一个人写出一段代码的时候,另一个人作为旁观者往往更容易发现其中的问题。第三、在技术互补的情况下,可以很大程度的提高效率。例如我和Highestop做UI的时候,他不太懂命令行和如何将Form嵌入控制台的问题,我替他解决了这些问题,而我在设计和应用Dialog,以及线程间的传值等不太擅长,最后是他完成了这些设计。
其次是缺点,最大的问题就是数据结构的问题,虽然在面向对象的框架下,都可以写各自的类和方法,但是核心代码对其他函数的调用还是很多的,由于互相不熟悉变量名称和效果,传值时还需要自己来写,这个很麻烦。比如殷神设计核心代码时,用到我写的外部函数,就得询问我,或者直接让我来写调用了。另一个问题就是效率问题,有时候由于工作的重复性以及讨论的不恰当性,会导致达不到1+1+1>3的效果。
以上就是我对本次结对编程的感想,总的说来,我从软工这门课程里得到的收获是非常大的,虽然需要很多的时间,但是通过完成工程,不仅可以学到技术知识,而且更获得了许多宝贵的合作经验。
附:我们的UML图~
三人靓照~