复审、结对编程由谢文杰和谢晨强组队练习。
测试源代码:
#include<stdio.h>
void arrange(int* x,int n)
{
int i,j,max,t;
for(i=0;i<=n-1;i++)
{
max=i;
for(j=i+1;j<=n-1;j++)
{
if(x[j]>x[max])
{
max=j;
}
}
if(max!=i)
{
t=x[i];
x[i]=x[max];
x[max]=t;
}
}
}
int main()
{
int i;
int a[3];
for(i=0;i<=2;i++)
{
scanf("%d",(a+i));
}
arrange(a,3);
for(i=0;i<=2;i++)
{
printf("%d ",*(a+i));
}
return 0;
}
void arrange(int* x,int n)
{
int i,j,max,t;
for(i=0;i<=n-1;i++)
{
max=i;
for(j=i+1;j<=n-1;j++)
{
if(x[j]>x[max])
{
max=j;
}
}
if(max!=i)
{
t=x[i];
x[i]=x[max];
x[max]=t;
}
}
}
int main()
{
int i;
int a[3];
for(i=0;i<=2;i++)
{
scanf("%d",(a+i));
}
arrange(a,3);
for(i=0;i<=2;i++)
{
printf("%d ",*(a+i));
}
return 0;
}
代码必须成功编译。
程序员必须测试过代码。
在面对面的复审中,一般是开发者控制流程,讲述前因后果。
复审者必须逐一提供反馈意见,复审者不必亲自调查每一件事,开发者有义务给出详尽的回答。
复审者(谢晨强):这段代码只有3个数字的比较,是否能对其进行扩展?
开发者(谢文杰):可以,可以保持函数不变,将主函数中的i<=2进行变更为k-1,a[3]变为a[k],在代码中定义k的值即可。
复审者(谢晨强):这么修改后函数别的变量或功能是否会受到影响?
开发者(谢文杰):不会,k在函数中未出现,且不影响功能与使用。
复审者(谢晨强):有没有留下说明使别人更易理解?
开发者(谢文杰):没有,网上能找到代码的具体例子,更为充分。
结对编程:在结对编程模式下,我们肩并肩,平等进行开发工作。在开发层次,结对编程能提供更好的设计质量和代码质量,两个合作解决问题的能力更强。对开发人员自身来说,结对工作能带来更多的信心,高质量产出能带来更高的满足感。
分为萌芽阶段、磨合阶段、规范阶段、创造阶段和解体阶段。
此段代码由谢文杰编函数,谢晨强编主函数,在合并时由于变量参数的不同而导致冲突,使代码无法运行,我们统一了变量名和参数名,再商讨较为简单的只比三个数较快较简单得测试代码使其编译通过并使其运行成功。
代码运行结果截图:
: