结对编程收获

这次结对编程真的是一次很锻炼人的经历,过程中充满了波折,最终也有不少收获,下面就从具体技术和一般开发经验两个方面谈谈我这次的收获。

具体技术上,这次采用的是Qt与C++,我曾经有过一些Qt经验,但只是自己写着玩玩,代码都不长。这次写Qt我最大的感受是,想成为一个入门的程序员,第一件事就是要懂得如何简明扼要地描述自己遇到的问题或者需要的技术,扔到百度上搜索,找到合适的解答。更成熟一点的程序员还要能用英语描述自己的问题并扔到 google 上找答案。在这个时代,技术总是不断更新的,作为程序员一定要培养学习新东西的能力,对于新技术要能够独立得迅速掌握,这样才能不被时代out。

我感觉在上了软工课以及这学期在各个场合用了一些以前很少用过的框架之后,我学习新东西的能力大幅提升,最重要的是我不再畏惧未知的技术,能够耐心地阅读各种库的使用方法。这次我在代码中使用了两个对我来说很陌生的库,一个是定时器 QTimer 类,另一个是 xml 文件读写工具  QXmlStreamReader 类和 QXmlStreamWriter 类,其中后者的使用更为复杂,我有了这学期以前的经验,很快在网上找到了我需要的技术解答并掌握了这几种库的使用方法,也很快调试成功。这应该算我这学期很大的进步之一。

技术上还有一个很重要的问题就是代码规范,这一点其实涵盖了代码的各个方面,从基本的变量命名到代码的整个架构,都需要规范。架构上,代码的规范可以参考设计模式中的内容,详见我的读书笔记,这次我想说的是一些更基本的问题。

首先是变量和函数命名,这次的UI包括了一大堆 QLabel 、 QLineEdit 以及 QHBoxLayout 、 QVBoxLayout 等控件与布局对象,我一上来的命名还算比较规范,能够一眼看懂这个控件代表的是什么,但随着各种相似的对象越来越多,我很难再在原来的命名方式内增加一个新的对象名而不搞混。当我意识到这个问题,我立刻狠下心把所有的变量按统一标准全部改名,比如显示算式的标签叫做 labelExp,显示答案的标签叫做 labelAns ,用户输入精度的文本框叫做 editPrecision ,点击后产生随机算式的按钮叫做 buttonGenerate ,用这种控件类型加名字的方式统一命名,变量瞬间清晰了不少。函数命名方面我一直的习惯都很好,统一采用驼峰法,因为Qt库函数都是首字母小写(这点不如安卓函数首字母大写科学),我这次统一采用首字母小写的驼峰法。函数命名这一点有很多组就做得非常不好,有函数用驼峰法有函数用下划线,颇有php风范。

其次,变量到底定义为局部变量还是 QMainWindow 类成员变量一定要考虑好,窗体对象的生存周期在Qt的UI编程里是一个很重要的问题,我因为一开始没有规划好每个对象的建立方式(成员变量还是局部变量,建立在堆上还是栈上),出了不少问题,好几次重写相关代码。这里我给出我最终的经验总结:对可能会修改的对象定义为成员变量,对绝对只用一次的对象设为局部变量;所有 QMainWindow 类内定义的对象全部建立在堆上,所有主函数新定义的对象全部建立在栈上(这两条主要是考虑了Qt的父子对象关联与析构方式)。这方面的规范对于今后的Qt编程至关重要。

还有一些细节问题比如页面切换方式等,给我的进程制造了一些障碍,但与上述的两点比都是小问题,详见我结对编程作业总结博客中的 bug 分析部分。

下面讲讲这次我这次收获的一般开发经验。这次作业工程中邓老师有句话让我印象深刻:标准是要靠抢的。以前我自己报过经济学类课程,其中很重要的一个问题就是标准,先抢到标准制定权的人往往能抢得先机。软件开发中也是这个道理,先发出sdk接口的组,只要质量基本令人满意,便很有机会垄断整个行业。

这次作业刚开始时。同学们一直等着老师和助教发布接口标准,但是老师和助教都静观其变,当同学们意识到这个问题需要自己解决的时候,已经比较晚了,然后各种乱七八糟的接口开始被发到了群里,根本没有一个统一的标准,以至于UI组的对接十分困难,对接几个组就需要写几份代码。我觉得我在这个问题上就过于乐观了,我以为所有人都能打成共识最终使用 xml 格式传递数据,于是在写自己的存取错题文件功能时用的都是 xml 文件解析库,结果最终没有人用这种方式,都是普通文件或者字符串。的确他们的这种方式非常没有远见,使core不具有好的可移植性,但是毕竟我没有在群里提这个问题,仅仅主观觉得大家都会这么做,结果我做了很多无用功。这个经历给我好好上了一课,我现在深刻地体会到团队项目中标准真的真的很重要,而且想让自己占得先机,标准是要抢的。

并且,这次作业中多了许多交流合作与信息沟通的成分,无论是组内沟通还是UI、core交流,都是在大家以往的编程经历中从未出现过的。信息交流在真正的团队开发中是十分重要的,其重要性绝不亚于个人码代码的能力,这次作业中的接口标准、彼此需要实现的功能,都是非常需要沟通的内容,缺少了必要的信息沟通会严重耽误整个项目的进展。

而针对二人结对编程方面的收获,我个人的体会主要是在别人面前写代码(边分析边写)会让思维更清晰,降低出错率。至于其他理论上结对编程具有的功能我在另一篇博客里都写了,这次由于我的队友的编程能力极度欠缺,对于新事物的学习能力也较差,很难体现出其他结对效果,希望老师以后在分组和评分的时候能够考虑到这样的问题。

最后,一句话概括一下我这次的收获:无论是从个人技术方面还是团队合作开发方面,规范与标准都是至关重要的。

原文地址:https://www.cnblogs.com/tilmto-Jerry/p/8881484.html

时间: 2024-11-08 07:32:01

结对编程收获的相关文章

结对编程收获-Core10组-PB16110698

本周结对编程追加作业:记录收获.坦白说,我的收获多而杂,一时不知从何说起,以下试图从各方面简要谈谈. 一.编程能力收获 从编程能力方面,我收获的主要是类的设计思路和算法设计.在作业要求blog的指引下,我和同伴一同思考.选用类,最终决定采用我提议的方案,类中的变量名.变量数量都是由我提议和设计完成的,主要基于要求的功能的实现.变量以外,还需要设计类的函数,这就涉及到算法层面.一开始,我对于生成运算式方面非常生疏,翻了半天谭浩强红皮书,又在团队作业的小组中讨论了一阵,终于决定采用树的形式生成,辅以

结对编程项目——电梯调度

电梯调度 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示: 电梯编号 可服务楼层 最大乘客数量 最大载重量 1 全部楼层 10 800 kg 2 单层 10 800 kg 3 双层 20 1600 kg 4 全部楼层 20 2000 kg 其使用规定如下: 1.楼层号为0~20,其中0号为地下一层: 2.有楼层限制的电梯不在响应楼层停靠,如单双层: 3.所有电梯采用统一按钮控制 请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了. 伙伴介绍与评价: 本次结

结对编程项目——收获及感想

结对编程项目-带UI的小初高数学学习软件 一.项目需求 用户: 小学.初中和高中学生. 功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张试卷(同一张卷子不能有相同题目),界面显

结对编程总结,收获和教训:by张惠雨&梁佳佳

这是第一次正真意义上的和朋友一起完成一个小项目,虽然国庆七天少了几天玩的时间,但是收获还是蛮多的,感谢队友每天能和我一起去码代码,让这几天过得比较有意义. 这次的结对编程项目实在以前的个人项目的基础上实现的,其中出题模块完全时个人项目的引用,敲了几天代码,感觉自己在图形界面这一方面也有了一定的基础,可以实现一些简单的小功能,但仍不可否认,编码过程中是遇到好多问题的:最开始写的界面是注册窗口,本以为只是几个简单的文本框,却没想到却花了最多的时间,仅仅就验证码的申请这一块就耗费了两天的时间,而在注册

结对编程小结与收获

1. 初始设计: 在拿到项目需求之后,我和伙伴经过讨论最终决定做一个java web小项目来实现需求. 登录注册部分,初始的账户沿用了个人项目的几个固定用户,注册部分注册成功后直接进入系统(注册不用存入数据库) 选择试卷类型方面,点击小初高中,则显示该类型的试卷,并根据数量来生成题目(题目生成沿用个人项目) 2. 遇到的问题: 遇到的第一个问题,手机注册码的发送,由于缺少所需的jar包,这个问题困扰了我们很久,最后参照网上的方法加上之前申请的短信网关给做出来了. 题目方面,因为之前个人项目中的题

中小学出题程序结对编程的总结收获

本次结对编程我是学习了一个新的东西叫VC,由于个人编程是采用dev C++编写的,但无法设计界面,所以我决定和室友一块学习这个新东西,以下是我的成果. 本次题目要求和个人项目类似,也是写中小学试卷生成,不同的是得编写账户登录修改密码以及批改试卷等功能,所以一个清楚的界面很重要. 在界面中最经常使用的是按钮,通过点击按钮触发某个事件. 以下是我程序的第一个界面登录界面: 完成登录之后可以通过输入手机号获得验证码. 接下来是注册功能的实现. 把注册的账户名和密码储存在txt文件当中,当需要登录的时候

结对编程过程总结

(1)工作中的照片 (2)对方性格评价: 1.我个友善的人,愿意合作与交流,在与我的合作学习和探究活动中,能选择自己擅长的方式(语言.文字.图表等)表述研究过程和结果;主动提供自己的资料和想法,与我分享自己智慧,思路,体验合作的愉快.能倾听和尊重我提出的不同观点和评议,能对研究过程和结果进行评议,并与我交换意见,充分体现结对编程的价值. 2.是个谦逊的人,在与我的合作交流中,我们做到相互尊重,相互信赖,认真倾听对方意见,勇于承认自己的不足,有虚心向对方学习请教的良好风尚,能在合作交流中正确地评价

结对编程之黄金点游戏

   一.关于游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项目,必

结对编程-黄金点游戏

一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项