结对编程——关于简单的四则运算练习程序
为了模拟项目开发的过程,我和我的组员2152227,基于四则运算的练习我们编写了一个简单的小程序,以下是他的博客园地址:
https://www.cnblogs.com/bajiu89/
代码如下:
1 #include <iostream>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <time.h>
5 using namespace std;
6
7 int main()
8 {
9 int A[300], B[300], k, t, T, a[300], b[300], c, d[300];
10 char C;
11 srand((unsigned)time(NULL));
12 t = 0; T = 0;
13 int q = 0;
14 int i = 0;
15
16 do
17 {
18 //产生随机符号
19 k = rand() % 4;
20 if (k == 0)
21 C = '+';
22 else if (k == 1)
23 C = '-';
24 else if (k == 2)
25 C = '*';
26 else if (k == 3)
27 C = '/';
28 A[q] = rand() % 100;
29 B[q] = rand() % 100;
30 //输出题目
31 if (C == '+')
32 {
33 c = A[q] + B[q];
34 if (c <= 100 && c >= 0)
35 {
36 cout << A[q] << "+" << B[q] << "=?" << endl;
37 a[q] = c;
38 q++;
39 }
40 }
41 if (C == '-')
42 {
43 c = A[q] - B[q];
44 if (c <= 100 && c >= 0)
45 {
46 cout << A[q] << "-" << B[q] << "=?" << endl;
47 a[q] = c;
48 q++;
49 }
50 }
51 if (C == '*')
52 {
53 c = A[q] * B[q];
54 if (c <= 100 && c >= 0)
55 {
56 cout << A[q] << "*" << B[q] << "=?" << endl;
57 a[q] = c;
58 q++;
59 }
60 }
61 if (C == '/')
62 {
63 c = A[q] / B[q];
64 if (c <= 100 && c >= 0)
65 {
66 cout << A[q] << "/" << B[q] << "=?" << endl;
67 a[q] = c;
68 q++;
69 }
70 }
71
72 } while (q < 300);
73 //输出结果
74 cout << "结果为:";
75 for (i = 0; i < 300; i++)
76 {
77 cin >> b[i];
78 if (a[i] == b[i])
79 t++;
80 else
81 {
82 d[T] = i;
83 T++;
84 }
85 }
86
87 if (t == 300)
88 cout << "恭喜你都答对了!" << endl;
89 else
90 {
91 cout << "第";
92 for (i = 0; i < T; i++)
93 cout << d[i] + 1 << "题错了!" << endl;
94 }
95 }
接下来我们尝试测试代码:
首先测试代码能否完整运行且正确给出题目
可以看出题目规整的显示在命令行中,没有出现显示以及除零等算术问题。
接下来我们试试程序能否正确处理输入结果
我们首先输入全部正确的答案:
运算结果完全正确!
接下来试试故意输入两个错误答案:
成功运行!
本次结对编程实验让我深入了解了结对编程的利与弊,为我今后小组合作编程能力打下了坚实的基础,以下是我这两天来进行结对编程的想法:
结对编程来自于极端编程,是它的十二个最佳实践之一。顾名思义,结对编程就是两个程序员坐在一起,结对进行代码开发。在极限编程中,所有的软件产品都是由两个程序员并排坐在一起,在同一台机器上共同完成的。在采用结对编程实践时,不同的团队形式各异。有的是分工明确型,一个人负责编写代码,另外一个人审查代码,负责代码的正确性和可读性;还有一个人负责详细设计,一个人负责代码实现;或者一个写功能代码,一个人写测试用例。有的是共同合作型,两个人共同讨论关于所开发功能的架构设计、编码实现、测试方法、代码风格等,然后轮流做输入和观察的工作。
不可否认,结对这种面对面的沟通交流方式,对于知识和技能的传递是最好的形式。同时,这种即时的沟通交流也让同事之间关系变得融洽,相对比那种每个人一个格子间闷头写代码,更利于创建和谐的团队氛围。根据“乔哈里视窗(沟通视窗)”的理论,在实际工作的人际交往中,共同的开放区越多,沟通起来也就越便利,越不易产生误会。当我们向别人扩大我们的公开象限时,就会更多的和对方建立良好的关系,结对编程就是很好的一种形式。在结对合作的时候,每个人不仅会从对方那里学到新的知识和技能,还能受到对方的工作方式和处世态度的影响。尺有所短,寸有所长,每个人都有自己的优点和长处,值得被学习和尊重。当团队中的每个人的能力提高了,其实就是整个团队能力的提高。
工作效率上,结对编程让大家更专注在工作上,个人的一些工作外的活动将不会进行。每个人都有自己要负责的任务,两个人其实形成了一个互相监督,共同进步的小团队,为了团队任务的完成,两个人都会专注在自己的任务上,这样就提高了输出的效率。
但同时,结对编程也有其局限性,我总结了以下两点:
一、管理者认为提高了人力成本
一个人可以完成的工作,变成两个人来做,产出就降低了一半,这很显然是一种浪费。关于说到的提高产品的质量,短时间无法看出来,所以,无容置疑的结对编程就被认定为一个不好的实践。
二、团队认为找到合适的结对人员很难
首先水平相差不太多的人在团队中不多;其次结对要求两个人的脾气性格都能够相投,否则很难合作;再次,有些人喜欢单打独斗,不善于和别人合作等等很多的原因和理由。
对于以上两点,在这里不做评判。敏捷开发不等于所有的敏捷实践都要在自己的团队落地,还是那句话:适合自己的才是最好的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?