结对编程收获

结对编程作业收获博客

   在这次结对编程作业中,一路走来,有些坎坷,但每一个具体的过程都让我们学到了很多。这次作业由我负责把控全局,担当“领航员”的角色,进行架构上的设计,队友负责具体敲键盘实现代码,担当“驾驶员”的角色。如果队友在长时间工作后产生疲惫,就由我来替换他进行"驾驶"工作,两人一起解决开发过程中出现的种种问题。在经过多次试验后,我们都认为这种模式的效率很高,毕竟两人在一起编程的话,谁都不想浪费别人的时间。

  在ddl的前一晚,我们还是差了一点,就再次熬夜了,经过一夜的奋斗总算完成了,我想做一件事,只要我们这个小team都不放弃的话,快乐一起分享,困难一起解决,最后的结果总是对得起自己的,不过我队友可能觉得我写的代码没有他多,但是我想我们之间可能还是缺少沟通,导致我技术学习一段时间,发现他把那部分代码写了(因为他是计算机学院的,有技术积累),我只能再开启下一部分,不过此次作业还是向他学习了一些东西。

   如果走上工作岗位后,我想部分工作我还是倾向于结对编程,毕竟结对编程在需求设计、编码规范方面是有着明显好处的,而且两个人编程不会觉得那么累,debug的过程也不会那么痛苦了。

结对编程的收获:

   UI主要工作量集中在设计界面,代码量不大。但是对接的时候,各组Core的API甚至逻辑功能的差别,给我们带来了巨大的麻烦,我是负责与core组对接的,所以当时面对每一组core,都要修改一下自己的代码。

在此次的设计中,从底层类到高层类的封装时,我尽可能保证高层类通过调用底层类的特定的public函数,而将其他方法尽可能隐藏为private,使得高层类不会重复调用底层类的组合引发错误。当然这里特别说明一点,因为此前在浏览SOLID原则的时候发现DIP原则,个人理解是,高层类需要通过调用底层类的函数实现,但最后实现上要考虑的是高层的抽象。比如,开关中的确包含灯的开关,但不能完全依赖灯开关的实现;我们要做的,是关注开关的标准接口,这样,一旦我们需要扩展开关为电器的开关,我们只需要保证灯、电器都继承了开关的接口。

我其实非常想吐槽自己的接口。这次即便在设计阶段耗费了大量的时间,但最终接口的实现上仍不尽人意,甚至最后的程序为了兼容这一接口,不得不添加一些属性来保证效率。这里还是存在改进方法的,一方面是设计一个中间类,兼容UI和Core,另一方面,重新设计接口并实现。个人感觉,此次底层的实现思路都比较清晰,重点就在于接口中我想给我的其他程序什么信息?我必须实现哪些功能?。因为现在自己仍在尽力耦合自己的UI界面和其他组的core核心,瞬间感觉当时自己应当联系其他团队开发出统一的一套接口标准,方便后期的耦合;但事已致此,我们只能不断修改自己的UI参数去适应其他组的core核心,这让我认识到现代编程规范和标准的重要性。

总的来说,这次作业还是有些收获的。首先是对编程知识的掌握有了提高,之前的个人项目我使用的编程语言是C语言,这次作业使用的是C++,通过这两次作业,我认为我对这两门语言的掌握都有所提高。其次是合作意识的提高,结对编程不比个人编程,在合作过程中需要注意各方各面,两人合作就是一个相互磨合的过程,磨合的越好完成工作的效率越高。两人合作也是相互学习的过程,在遇到问题时,两个人讨论,提出自己的解决问题的方法,不光是自己个人能力的提升也为伙伴提供了解题思路相互促进相互学习。

课程建议

关于软工这门课,我总体上是支持的,因为我觉得它使我们脱离了舒适区,我们面对这些作业,必须要去学习新的知识,了解一个程序员的工作,每天花大量的时间去做这些事情,这对于我们对编程职业的体会是有好处的,但是我也有一些提议,这些提议是基于个人体会,诚然,软工让我们学了很多东西,但这也是有代价的,我们其他课可能没法顾及了,我们毕竟是学生,还有其他课程要完成,而且过紧的ddl真的能让我们有些忙乱,学完这些之后,我们可能对某些语言并没有比较深入的体会,只是看着教程这么用我也这么用,那些技术的基础我们恐怕也没有搞牢固,说的多一点,其实这也跟信院它的培养方案有关系,毕竟信院是通信口,跟计算机学院相比,我们在编程方面训练的少了,突然上软工这门对各类语言、软件知识要求比较高的课,见识是见识了,但有些东西还需要沉淀。当然这些东西对于学霸同学或者编程方面有积累的同学就可以忽略不计了。所以很难提出一个具体的,比较好的建议,或者软工这门课开两个学期?抑或就是学院统筹兼顾给我们多安排一些编程类的课,毕竟科大信院的同学编程能力差按我们一些老师的说法也“名声远扬”了,正好可以弥补提高一下。

对团队作业的启示:

   团队作业即将开始,这次编程作业给我的启示就是要提前准备用到的知识与技能,做的过程就会出现很多bug,需要去修改完善,如果连基本知识都不知道就很麻烦。团队项目里面肯定是每个人负责一些内容,这些内容也有可能像这次作业一样需要制定一个连接的标准,所以在做之前,团队成员先调研好要做的东西,在需求理解、设计思路上充分的沟通和讨论,尽早的发现和解决问题,避免因需求理解偏差、设计问题、连接问题造成返工。在做的过程中还可以交叉审查一下,做集体review,看代码哪里有问题,提高debug的效率,也让组员了解其他人的实现代码,避免一些逻辑和设计问题。

作业总结:

在开发的过程中,从分析到设计到具体实现,是一个循序渐进的过程。在这个过程中遇到过许多问题,但最后通过与队友相互之间的合作一一解决,这个过程是快乐的。在完成这个UI设计后,经过了很多次的改进,不断的寻找bug才得到最后的版本。通过本次作业真正的体会到软件工程的作用,编程不是要求我们仅仅实现功能就行了,还要我们去考虑用户的需求,交互设计要简洁,程序鲁棒性要好,与其它程序的接口要具有通用性,毕竟一个产品大多数情况下不可能一个人就做出来。这次作业还教会我们在软件工程里面沟通的重要性,不同模块分属不同人员时,模块之间的结合标准需要整个软件的编程人员一起商议制定。

 

posted @ 2018-04-20 15:41  go_for_the_sunlight  阅读(188)  评论(1编辑  收藏  举报