【现代软件工程】——结对编程收获
本次结对编程,有一个非常优秀的队友,在整个过程中学习与收获了很多。
以前别的课程的大作业以及上一次的个人作业,当遇到问题的时候,我也会经常去请教身边很厉害的人。但结对编程的整个过程中,两个人都在一起学习、一起讨论,这是一个很好的交流机会。对于编程能力较弱的我来说,能够学习别人的编程思维,感受别人解决问题的能力,真的是一个难得又宝贵的机会。也因此更加认识到自己的不足,无形中起到了一种鞭策的作用。
在上一篇博客中也提到过,ui对我们来说都是一个全新的东西。知道自己抽到ui的时候,完全不知道任何开发工具,更别提其他任何想法了。之后经过讨论以及请教学长等,考虑到跨平台的需要,以及编程语言的掌握程度,最终确定了使用Qt。那么整个项目的第一步就是学习如何使用Qt。在网上找了不止一个教程,但想到项目时间的限制,我们不可能非常系统地学习Qt,而是要追求快速上手。在此推荐一个教程:https://qtguide.ustclug.org/
这个教程条理非常清晰,既适合非常系统的学习,也适合快速上手。唯一的遗憾是作者还没有更新完全。
记得邓老师经常强调的一点是,遇到任何工具使用上的问题,要及时询问身边的高手,这样才能快速解决,提高效率。在安装Qt的过程中,我就遇到了百思不得其解的问题。前前后后卸载重装了几次,差点就要失去希望了。这时候我的队友帮我换了一个编译器,一个非常简单的例程终于可以运行了。虽然我的队友也是第一次使用Qt,但是遇到问题的时候,“1+1>2”就得到了非常好的体现。这也启示我以后遇到类似问题的时候,一个人死钻可能也解决不了问题,所以要学会向别人请教,多和别人交流。
“1+1>1”也集中体现在了编码过程中。由于一开始core组都还没有写完代码,我们只能做一些最基本的功能,比如输入题目数量、一道一道显示。后来又加上了以输入0和1的形式计算总分、倒计时的功能。整个过程效率都非常高。后来涉及到各个按钮之间的逻辑问题,出现了一些bug,但在共同的讨论之下都一一解决。
过程中遇到最大的问题依然是接口问题。老师和助教没有为我们制定接口的规范,是为了考验我们各个组之间的交流和协调能力。但是由于我们一开始真的对core组的内部代码一无所知,所以一度感觉无从下手。后来与第一组core组对接的时候,清楚了他们传入的参数有哪些,才加上了更多的输入设置,比如加减乘除、乘方与小数运算的选择等。在此要感谢第一组core组的配合,花了好几个晚上陪我们一起debug。正是由于没有统一的接口规范,很多core组的接口设计都不大相同,所以在对接的过程中,每一次都要对界面进行调整。
以前会嘲笑有一些软件的界面设计,但真正到了自己设计与实现的时候,才知道要做一个鲁棒性强、友好又优美的界面有多难了。用户界面设计需要对用户的需求有更透彻的分析,所以也对团队项目的用户调研有了启发,的确需要重新审视我们的需求分析了。