一、是否需要代碼規範
現代軟體發展中,一個軟體大多都是由一個團隊來完成,在團隊合作過程中,工程師們做最多的事情就是“看别人的代碼”,如果每個人的代碼風格迥異,沒有統一的規範,旁觀者看的時候非常頭痛,看都看不懂何談開發和維護。而統一的風格使得代碼可讀性大大提高了,規範的代碼在團隊的合作開發中是非常有益而且必要的。
針對題目中的四個論點的反駁:
-
這些規範都是官僚制度下産生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。
開發軟體是一個團隊活動,而不是個人的英雄主義。也許規範對個人的開發效率會有負面影響,但是對于團隊合作來說,編碼規範使成員之間可以輕松地閱讀對方的代碼,這恰恰能夠節約大家的程式設計時間提高工作效率,使開發人員集中精力關注他們真正應該關注的問題,完善他們的軟體,開發出更有價值的軟體。而且軟體開發人員流動性大,編碼規範使新的開發人員能夠很快的接手項目組其他成員的工作,快速完成工作交接。
-
我是個藝術家,手藝人,我有自己的規範和原則。
就像書中所說:軟體都是在互相合作中完成的。合作的最小機關是兩個人,兩個工程師做的最多的事情就是“看代碼”。如果在團隊中遵從個人英雄主義,這樣會影響到整個團隊的工作。我在網上查閱時看到過這樣的一句話“任何一個傻瓜都能寫出計算機可以了解的代碼,唯有寫出人類容易了解的代碼,才是優先的程式員。”
-
規範不能強求一律,應該允許很多例外。
我認為規範之是以稱之為規範就具有強求性。當然規範也是要不斷地修訂,但是規範一旦釋出就應該保持一緻。即使有例外,也隻能是少數情況,而不能是很多例外。如果每個人都有例外,這些例外堆積起來規範就不複存在,每個人又被“個人主義”所主導。
-
我擅長制定編碼規範,你們聽我的就好了。
規範的産生應該是民主的決定,而并非一人主導。每個人都有自己的編碼風格,如果每人都提出用自己的風格來制定規範也不複存在。如果對規範有意見,可以通過一定方法修訂并釋出新的規範,但是在新的規範釋出之前,請遵守統一的規範。
二、代碼複審
這次我複審的代碼是我的結對夥伴鐘靈毓秀的代碼。部落格連結:http://www.cnblogs.com/zlyx/p/5272805.html 代碼如下:
#include"stdio.h"
#include"stdlib.h"
#include<time.h>
main(){
int a,b,result,i,j,m,n;
printf("四則運算題目數量:");
scanf("%d",&i);
srand( (unsigned)time( NULL ) );
for( j = 0; j < i;j++ )
{
a=rand()%100+1;
b=rand()%100+1;
m=rand()%100+1;
n=rand()%100+1;
result=rand()%8;
switch(result){
case 0:printf("%d+%d=\n",a,b);break;
case 1:printf("%d-%d=\n",a,b);break;
case 2:printf("%d*%d=\n",a,b);break;
case 3:printf("%d/%d=\n",a,b);break;
case 4:printf("%d/%d+%d/%d=\n",a,m,b,n);break;
case 5:printf("%d/%d-%d/%d=\n",a,m,b,n);break;
case 6:printf("%d/%d*%d/%d=\n",a,m,b,n);break;
case 7:printf("%d/%d/%d/%d=\n",a,m,b,n);break;
}
}
}
以下是我的複審結果:
1、 概要部分
第二次的作業題目是編寫自動生成四則運算的題目,題目包括整數和真分數。我複審的代碼基本符合題目的需求,通過執行程式,每行代碼都沒有問題,可以準确的運作出結果,可讀性一般,易維護。但是我認為代碼設計考慮的不夠周全:
(1)在除法運算中,此程式沒有解決除數為0的問題。
(2)分數運算中,沒有解決分數為真分數問題。
2、設計規範部分
代碼設計流程較規範,不存在無用的代碼,整體簡潔。
3、代碼規範部分
(1)部分代碼沒有縮進。
(2)雖然程式較短,實作方法簡單,但是沒有對關鍵代碼注釋。
4、具體代碼部分
(1)程式中的在命名變量部分使用的是a、b等代名詞,這樣命名雖簡單,但是不能展現它所代表的具體含義,是以在命名時應使用望文生義的英文縮寫或拼音縮寫。
(2)程式中将所有的代碼都寫在main()裡面,應該多拆分成多個方法。
5、效能
在我看來,程式中沒有明顯可優化的部分。
6、可讀性
代碼簡短,功能簡單,可讀性一般。但是沒有足夠的注釋。
三、P2P
PSP2.1 | Personal software Process stages | Time Senior student |
Planning | 計劃 | 6h |
·Estimate | ·估計這個任務需要多長時間 | |
Development | 開發 | 10min |
·Analysis | ·需求分析 | |
·Design Spec | ·生成設計文檔 | 20min |
·Design Review | ·設計複審 | 1h |
·Coding Standard | ·代碼規範 | |
·Design | ·具體設計 | |
·Coding | ·具體編碼 | 3h |
·Code Review | ·代碼複審 | |
·Test | ·測試 | |
Reporting | 報告 | |
·Test Report | ·測試報告 | 15min |
·Size Measurement | ·計算工作量 | |
·Postmortem&Process Improvement Plan | ·事後總結,并提出過程改進計劃 |