• 结对编程收获


    结对编程收获
     
    本文分编程技能收获,结对编程的好处,以及对接的收获三方面

     

    技能收获

      这次负责UI设计,因为之前用JAVA做过桌面应用,对于常用的组件还算熟悉,因此在结对中主要负责代码的编写,并且最终选择Qt,主要的还是看重的Qt的移指性(一次编写到处编译),因为当时注意到有这么一条要求,不过到最后大家好像都没做。简单谈谈学到的新知识与开发过程中反思。

    • 首先让我眼前一亮的是Singnal-Slot的传递事件机制,最关键的是对于非窗体也支持这种机制,比如定时器,真的非常灵活。
    • 其次利用Wiget上重叠放置多个wiget的方式实现在一块面板实现不同功能界面的无缝切换,以前没有尝试过。
    • QwigetTable的使用也比java swing中的Table组件友好的多,很简单就可以实现内容显示,编辑,这个想在我在数据库大作业中实现的,即在Table中显示查询结果,然后可以对查询出来的内容进行修改,直接一次提交回去,感觉非常方便。
    • 但是不爽的地方也很明显,编译一次实在太慢了,每次编译都打断思维的连续性,甚至还想拿出手机玩一会,体验非常差,当然也是提醒我应该换电脑了。
    • 在布局上QT也提供了多种布局组件,但是碍于自身审美水平最后搞出来并不是十分漂亮,而且出现了在分辨率时候出现了布局改变,几个lable汉字显示不全的情况,经过调整才适配,这在以后的开发中要注意用户设备的多样性。
    • 提升了模块设计能力。界面功能最复杂的是答题界面,上面有三个按钮,每个按钮附带一个事件,还有定时器附带的计时结束的时间,四种事件各种发生顺序进行判别,并执行相关的操作,最初是在每个槽函数里设计相应的逻辑,但是发现每次出现bug都要对四个部分的逻辑进行修改,效率非常的低,后来发现四个按钮的处理都可以分解为两个部分
      1 根据答题输入判别对错,将相应数据保存进我设计的两个vector中。
      2 根据压入vector的数据进行页面的刷新
      分离出这两个函数后,事件逻辑基本就是根据几个判定点击顺序的flag来执行这两个函数,避免了重复代码,逻辑也变得简明,而且出现bug后只需要修改这两个函数,不需要再修改每个时间,大大加快了开发效率。

     

    团队编程感悟

      在此次编程中我主要负责代码的编写,因此仅仅从我的角度谈谈感受。
      这是我第一次在这种情境下进行编程,起初对于这种编程方式我是拒绝的,写代码不就应该应该一个人默默的敲打键盘吗。
    在这种疑惑中,我们开始了这次结对编程。
        -1 最开始的时候每次都要向驾驶员介绍现在写的进度,完成的是他设计的哪一部分,他有时候会在写的时候问一下我的逻辑,原本有些不耐烦,但是有几次却因为这种询问,弥补了好几个我思考的漏洞,让我感受到了结对编程的些许威力。
        -2更让我对这种结对编程方式的威力有了全新认识的是,在答题界面中,因为设计不周,出现了许多神奇的bug,我思考无果,非常恼怒,修改感觉逻辑混乱,甚至当时想完全推倒重来,在驾驶员的劝导下,我们决定还是先尝试进行修改,我在讲述我自己认为完美的逻辑与实现时候,没想到被大体了解我思路的驾驶员一下指出漏洞,并且在讨论中进行了bug的修复,大大节省了重写的时间。 至此,我感受到的结对编程优点有。 
      1 压榨出效率,相信我,有一个人在旁边看着你码代码的时候,你是不会想着打开手机看看qq微信微博知乎什么的。 
      2 消灭潜在bug,许多你思维的漏洞在编写的时候就会被驾驶员指出来。 
      3 大大减少真正debug的时间,当一个人大体了解你的代码的时候,真出了bug,他可能会不同于你对代码的固有认识,从而解决自己认为代码完美无缺无法debug的情况。


     

    接口对接的收获

      这部分可能是我最失误的部分,先说现在看来最荒谬的一个想法,core组现在一个都没写完,我怎么写后台逻辑?因此直到周四,我都只是把界面搭了出来,后台逻辑都没写。
      现在看来这个想法是可笑的,事实上,老师可以理解为以后的产品经理已经将core的功能制定了,我完全可以自己假定一个core的实现方式,即定义自己的接口,然后在这假定下,进行逻辑的编写,在core真正完成任务的时候,只需要将他们的接口转换成我之前想象的样子就ok了,而且这样还隔绝了不同core接口对我页面时间逻辑的影响(实现VIEW层与MODEL的分离)。这正是说没有什么问题是在中间加一层解决不了的!! 但是我还是感觉接口的设计确实还是有高下之分的,即我想象的模式,应该最适合我自己的事件逻辑编写,那么对我来说,最好的core接口就是与我想象的完全一样的,因为这样几乎不用做什么转换,假如以后实际工作,应该相互之间早早的定义好接口,这样完全省去转化接口的工作量。
      除此之外,还学会了使用引入静态库lib的方法,以及动态链接库dll的使用,还有如何打包必要的dll发布自己工程,这都是之前没有接触到的,收获还是很大的。

     

    以上就是此次结对编程的技能经验上的收获,体会到了结对编程的巨大威力,我考虑提议我们组在之后的团队项目上也使用这种模式,不仅可以提高效率,还可以了解相互的工作进度,希望之后的团队项目能顺利!

     

  • 相关阅读:
    Crowdsec:一款面向Linux的现代化协作式大型多人防火墙
    Linux文件操作:利用C语言删除某个目录下的文件
    GitHub 长期被中国人“霸榜”?看完这些榜单,这又是什么新姿势?
    英语不好学不好编程?程序员记忆单词专属诀窍,效果简直要逆天
    谁说女生不适合当程序员?世界第一位程序员,就是女性!
    C语言丨一篇文章带你认识递归与迭代
    C语言进阶丨(七)数组的基本概念和初始化【1】
    赔97.6万元!腾讯一程序员违反竞业协议,三年白干了!
    雪夜思绪
    算法复习(2)递归
  • 原文地址:https://www.cnblogs.com/zsl96/p/8892822.html
Copyright © 2020-2023  润新知