结对编程的心得体会

发布时间 2023-04-13 16:02:02作者: 塞西莉娅

  引入

  本次的软件开发与创新课程内容为结对编程。首先要确定的是结对编程的概念。结对编程(Pair Programming)是一种敏捷软件开发的方法,两个程序员在一台计算机上共同工作。一个人输入代码,另一个人在一旁审核他所写的每一行代码。一段时间后双方互换,一开始写代码的人成了“观察员”,换之前审核代码的程序员继续完成程序。在完成程序的整个过程中,这样的交换可能会发生好多次。

  在此次结对编程中,我(2152313)和我的同伴(2152317)组队,完成了一个拥有扩充功能的四则运算程序。

  此程序具有以下功能:

    1)可随机生成加减乘除四则运算题目(100以内的数字)。

    2)拥有检查功能,会核实所填写的答案是否正确,如果回答错误则程序会自动给出正确的答案。

    3)可自定义题目的数量(扩充)

    4)可自定义每道题的分值,并会在程序结束后计算总分值(扩充)

    5)可自定义每道题答案的范围(如最小值0,最大值100)(扩充)

  结对编程的意义以及优缺点

  结对编程有很多优点,包括增加纪律性以及写出更好的代码等。结对编程时,两个人共同完成一个程序可以避免个人误区。且通常个人的想法难免有局限性,双方站在不同的角度能够看到彼此在思考上的差异,从其中选择更为优秀的思想对整个程序的开发过程是有极大好处的。当然,通过结对,代码经另一个程序员审查,使得整个程序的设计,测试和编程过程都更加高效且一定程度上保证了质量。

  当然有优点就会有缺点,结对编程也不例外,例如两个程序员在开发程序过程中很可能就某一问题会产生矛盾与争执,造成不必要的内耗。因此在结对编程过程中及时的沟通协调是非常必要的。有效的沟通与协调能让双方都清楚当下的进度以及目标,在此基础上意见有分歧是正常的情况,但需注意要理性地交流探讨自己的想法。

  程序分析与实验过程

  由于我们双方对Python都不太了解,因此经过一番商讨之后我们决定使用C++来编写程序。

  

   特殊的一点是,我们并不是先完成基础程序再考虑附加功能的,而是都认为在一开始就构思整个程序并直接进行编写比先完成基础版再写附加功能要更加高效。因此我们在程序的开头就确定了可以自定义所出题目的数量,题目所给数字的最大值,每道题的分值(计算总分功能)以及每道题答案的范围。

  

   C++语言可以使用#define和const来创建符号常量,而使用enum(枚举常量)工具不仅能够创建符号常量,还能定义新的数据类型。与用#define指令说明常量相比,用enum枚举常量有以下几点好处:

  1)使程序更加容易维护。因为枚举常量是由编译程序自动生成的,而标识符常量必须由程序员手动赋值。

  2)使程序调试起来更方便。

  3)枚举和define都可以switch。其中枚举是类型安全的而define不是。

  这也是我们两人在本程序中主要的意见分歧之处。在经过一番研究过后,我们达成了意见统一:使用一条enum比一堆define来说更加清晰整洁且易于后续的维护调整。

  

   这段代码的作用是将枚举类型转换为字符类型,以便输出。(Add,Subtract,Multiply,Divide)

  

   这段代码的功能是计算生成表达式的正确结果。

  

   这段代码利用Bool来检查生成计算式的正确与否。比如减法的结果不能为负数,除法的结果不能为小数。

  

   这段代码的功能是依据给定操作符(加减乘除),生成符合条件的表达式。

  

  

   这就是程序的主体部分。利用了left和right来记录运算式的左右值,方便之后的答案核对。通过if(result[i] == myResult(left[i],right[i],oper[i]))这段代码来判断用户的回答是否与正确答案相等,正确则输出 right,answerRigth加一,否则输出not correct并会给出正确答案。其核心思想就是随机运算式生成后程序先会自动计算其答案,之后与用户的输入进行比对来看是否回答正确。

  代码功能演示

  为方便演示,就将题目设为5道,每道分值为1分,满分5分。

  

   可以看到回答正确会显示“Right!”,回答错误会显示“Not correct!”并会给出正确的答案。在答题结束后会统计总分。

  总结

  以上就是我们二人通过结对编程所完成的程序与全部过程。在此次实验中我们熟悉了结对编程的流程,加强了双人合作编写代码的能力。总体来说,结对编程提高了完成程序的效率,也提高了编写代码的准确率与质量,我们在此次实验中都受益匪浅。