结对编程感悟

  我们是Core第四组,上学期在数据结构课程中我们曾经有过编写计算算数表达式的经历,所以知道自己要写内核后,感觉感觉在思路上不会有很苦难的地方,但是在随机生成表达式的编写时还是遇到了一些困难。这次的作业是结对编程和个人独立作业也有很大不同,需要两个人之间合作,最后生成API接口和UI组对接也是之前没有接触过的,两周左右的时间写完了core的确也有很多感悟。

结对与独立作业

  刚看到题目时被那些琐碎,冗杂的分支条件所震撼,真是一脸懵逼,看到API和接口更是不知所云。在随后的几天中,随着讨论的深入,思路也逐渐清晰。我们开始时是一起编写,一位领航员,一位驾驶员,但之后感觉这样的编程方式效率并不高,然后采取分工编写不同的子函数,有问题时再一起讨论的方式,后期主要是一起做一些细节的处理,如乘方和整数模式下如何生成表达式,总的来说是一次非常愉快的合作。

  结对作业的效率明显高于独立作业,当一个人的脑子不转了的时候,另一人人还可以继续做事,出现了Bug时通过讨论可以更快的解决问题,但是每个人都有自己的编程风格,遇到具体的问题也会有不同的想法,这就更需要沟通和磨合。

选择合适的数据结构

  在这次Core的编写中,我更加体会到选择一个良好的数据结构的重要性。

  在随机生成算数表达式时,我们想先生成后缀或者中缀表达式,但是实际编写中发现,直接生成算数表达式十分困难,表达式极有可能不合法,中间计算过程出现负数,计算困难等等问题。在后来的讨论中我们重新选择了数据结构,采用二叉树的形式,良好的数据结构也大大减少了我们的工作量,二叉树的树枝天然的时运算符,树叶时运算数,生成的时候非常方便。中间解结果只有可能在减号的时候出现负数,这时候左子树的数值大于右子树,只要交换左右子树就可以使这个表达式重新合法。在乘方模式下时,由于括号的堆叠很可能使计算结果很长,这是我们选择将乘方沉到树底,使他的左右不可能耦合括号,使得表达式和运算结果十分简介。在整数和除法模式时需要整除使结果为整数,表达式中只有可能在除法时出现分数,我们同样选择将除号沉到树底,使分子为分母的倍数,这样任何中间过程都是整数,满足要求。想清楚这些后我们编程也更有信心了,良好的数据结构为我们节省了很多的时间和精力。

原文地址:https://www.cnblogs.com/ustcfanli/p/8894233.html

时间: 2024-08-12 23:11:49

结对编程感悟的相关文章

第十周(11.18-11.24)----结对编程----感悟

当开始接触到结对编程这个名词的时候,我很疑惑这是一个什么样的编程形式.当逐步深入读了邹欣老师<构建之法>第二版75页4.5节之后,我不禁想起了一个这样的画面.在准备考研复试阶段,我请了一位编程能力比我强人来指导我学习编程.当时做的是ACM水题,基础的原因,只能从水体开始练习.开始时我坐在电脑前,他坐在我旁边,他看着我进行编程.当遇到一个语法上的错误时,他记得清的就改正我,记不清的就叫我翻书,找到后又回来改代码.遇到算法上的问题的时候,他在纸上给我画一些草图帮我屡屡思路.我还记得那是一道大数相加

对于结对编程的一些感悟

软工课的第一次小作业是两人结对编程,使用JavaScript共同开发一个Game of Life网页游戏,游戏逻辑并不复杂:在一个无限延伸的网格中,每个网格住着一个存货状态随机的细胞,在一定规则下,一个细胞在下一代的生死取决于其周围细胞的数量.与以往的个人编程或团队开发不同,从编程实现到测试,再到最后的文档编写,都要通过两人结对来完成.通过作业实践,对结对编程有了更多的感受. 在我们开发过程中,两人分别承担驾驶员和领航员的角色,“驾驶员”负责具体的编码工作,“领航员”则负责检查,及时纠正代码中的

关于结对编程的体会和感悟

结对编程的利与弊 在这次微信开发过程中,我和组员练习了结对编程的这种编程模式,也就是两个人同时在一台电脑上进行编程. 之前的时候我也在其他地方练习过这种模式,现在想谈谈这种合作模式的利和弊,我对它的理解. 结对编程的利 最大的好处就是,两个人在一起写代码的时候能够融合两种不同的思路,一个人写的时候另一个人可以浏览,这样能够让代码准确性更高. 两个人一起写代码,便于尝试新的代码风格和变量命名,以及代码风格和命名风格的统一 不用再pull和push之间各种merge 能够平衡组员之间工作量 增进组员

172328 结对编程练习_四则运算 第一周 阶段总结

172328 结对编程练习_四则运算 第一周 阶段总结 1.项目内容解析 (1).自动生成不同的题目 (2).实现中缀表达式→后缀表达式 (3).支持真分数 (4).题目去重 (5).用户选择题目等级和题目数量 (6).给用户计算正确率 (7).错误处理测试,非法表达式 (8).分数化简 2.设计思路内容 (1).先进行了小组讨论,对于整个题目进行了大体的分析和要点记录. (2).确定了几个必有的模块,生成题目类,用户使用类,中缀表达式变后缀表达式类,后缀表达式计算类. (3).对于每个模块的实

结对编程 By:李畅&amp;李雅楠

开始.结束与开始 by李畅 李雅楠 看似漫长实则短暂的结对编程项目就这么结束了.细细回想起来,其中更有着点滴的感悟与体会.那么,让我们一切从头说起,慢慢回味其中的点滴. Part 1 初遇结对编程,对其中的点滴真的是可以说完全不了解.结对编程?如何去做?怎么去做?又会有什么结果?一切,起于未知. 而在从个人项目到结对编程项目转换的初始,就开始体会到结对编程项目的细微好处了.首先是相互之间的互看代码.(先例行感慨一下自己的搭档真的很厉害)在互看代码的过程中,我们开始了解对方的思路,开始明确对方的想

结对编程小结与收获

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

结对编程

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作.一个人输入代码,而另一个人审查他输入的每一行代码.输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员).两个程序员经常互换角色. 在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理.这样使得驾驶者可以集中全部注意力在完成当前任务的"战术"方面.观察员当作安全网和指南.结对编程对开发程序有很多好处.比如增加纪律性,写出更好的代码等.

软件工程------结对编程第二次

这一周我(1551426)还是继续和我们组的成员(1551419)两人一起结对编程,除此之外,我们还设计了数据库的,总共三个关系模式 room(roomtype,dailyprice,deposit) roominfo(roomnumber,roomtype,isfree) guest(id, startday,phonenumber,roomnumber,name,sex,stayday) 起初我们把room和guest 放在了一起,后来发现数据的冗余以后马上换成三个关系表. 这是我们的关系图

软工第二次实验——结对编程

1丶小组成员 卫瑞亮 1500802122 王玉卿 1500802099 2.代码链接 https://coding.net/u/qq1062718477/p/SE_task/git/commits/master/ 3.软件界面 4.结对编程照片 5.心得体会 到今天接触结对编程差不多两周了,对于结对编程有了更加深刻地理解,通过结对编程,我们可以及时的发现并解决后面可能会出现的问题,并且还能提升我们与别 人进行交流的能力,与人沟通对我们来说也是极为重要的,同时,结对编程使我们频繁进行交流,而且要