1. 是否需要有代碼規範
對于是否需要有代碼規範,請考慮下列論點并反駁/支援:
這些規範都是官僚制度下産生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。
不對。代碼規範是為了友善程式員群體的交流與審查。畢竟一個項目大多是以團隊的形式。
我是個藝術家,手藝人,我有自己的規範和原則。
不對,編碼風格不是編碼規範,編碼規範同時包括了編碼風格和其它規範,不僅僅指代碼格式。例如,像“傳回成功/失敗的函數應該用一個整數作為傳回值”,這樣的規則不屬于編碼風格。有自己的風格可以,但不能因為自己的風格違反編碼規範。
規範不能強求一律,應該允許很多例外。
不對,規範之是以叫規範,就是一個行業的行為準則,如果允許例外的話就不能稱之為規範了。
我擅長制定編碼規範,你們聽我的就好了。
不對,規範的制定不應該由一個人自作主張,而是應該由大多數人決定,并且經得起檢驗才能叫規範。
2. 代碼複審
我審查的是王乃寬同學,他說是我的室友。源代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int a,b,op,os;
aq1: printf("選擇您想挑戰的運算法則\n");
printf("1.加法 2.減法 3.乘法 4.除法\n");
scanf("%d",&op);
switch(op)
{
aq: case 1:
srand((unsigned)time(NULL));
a=rand()%100+1;b=rand()%100+1;
printf("題目為:%d + %d = ?\n\n",a,b);
printf("1.檢視答案 2.做下一題\n");
scanf("%d",&os);
if(os==1)
{printf("%d + %d =%d\n\n\n",a,b,a+b);
goto aq1;
}
else
goto aq;
break;
at: case 2:a=rand()%100+1;b=rand()%100+1;
printf("題目為:%d - %d = ?\n\n",a,b);
printf("1.檢視答案 2.做下一題\n");
scanf("%d",&os);
if(os==1)
{printf("%d - %d =%d\n\n\n",a,b,a-b);
goto aq1;
}
else
goto at;
break;
aq2: case 3:
a=rand()%100+1;b=rand()%100+1;
printf("題目為:%d * %d = ?\n\n",a,b);
printf("1.檢視答案 2.做下一題\n");
scanf("%d",&os);
if(os==1)
{printf("%d * %d =%d\n\n\n",a,b,a*b);
goto aq1;
}
else
goto aq2;
aq3: case 4:
a=rand()%100+1;b=rand()%100+1;
printf("題目為:%d / %d = ?\n\n",a,b);
printf("1.檢視答案 2.做下一題\n");
scanf("%d",&os);
if(os==1)
{printf("%d / %d =%d\n\n\n",a,b,a/b);
goto aq1;
}
else
goto aq3;
break;
}
}
代碼工作嗎?
工作
代碼符合需求和規格說明麼?
是的
代碼設計是否考慮周全?
缺少考慮分母為零的情況。
所有的代碼容易了解?
并不是,個人水準有限,并不能了解全部,但是大部分還是可以了解的
有備援的或重複的代碼麼?
沒有
盡可能子產品化的代碼麼?
任何全局變量可以替換嗎?
代碼是可以測試的麼?
有沒有無用的代碼可以清除?
沒有。
我稽核了一下王乃寬的代碼,發現比我的精細許多,能從中學習到一些思想,他的代碼考慮了單一一種運算的情況,适合想強化加減乘除單一計算能力的學生。值得借鑒。