天天看點

作業三:代碼規範、代碼複審、PSP

一、是否需要代碼規範

  現代軟體發展中,一個軟體大多都是由一個團隊來完成,在團隊合作過程中,工程師們做最多的事情就是“看别人的代碼”,如果每個人的代碼風格迥異,沒有統一的規範,旁觀者看的時候非常頭痛,看都看不懂何談開發和維護。而統一的風格使得代碼可讀性大大提高了,規範的代碼在團隊的合作開發中是非常有益而且必要的。

針對題目中的四個論點的反駁:

  1. 這些規範都是官僚制度下産生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。

      開發軟體是一個團隊活動,而不是個人的英雄主義。也許規範對個人的開發效率會有負面影響,但是對于團隊合作來說,編碼規範使成員之間可以輕松地閱讀對方的代碼,這恰恰能夠節約大家的程式設計時間提高工作效率,使開發人員集中精力關注他們真正應該關注的問題,完善他們的軟體,開發出更有價值的軟體。而且軟體開發人員流動性大,編碼規範使新的開發人員能夠很快的接手項目組其他成員的工作,快速完成工作交接。

  2. 我是個藝術家,手藝人,我有自己的規範和原則。

      就像書中所說:軟體都是在互相合作中完成的。合作的最小機關是兩個人,兩個工程師做的最多的事情就是“看代碼”。如果在團隊中遵從個人英雄主義,這樣會影響到整個團隊的工作。我在網上查閱時看到過這樣的一句話“任何一個傻瓜都能寫出計算機可以了解的代碼,唯有寫出人類容易了解的代碼,才是優先的程式員。”

  3. 規範不能強求一律,應該允許很多例外。

      我認為規範之是以稱之為規範就具有強求性。當然規範也是要不斷地修訂,但是規範一旦釋出就應該保持一緻。即使有例外,也隻能是少數情況,而不能是很多例外。如果每個人都有例外,這些例外堆積起來規範就不複存在,每個人又被“個人主義”所主導。

  4. 我擅長制定編碼規範,你們聽我的就好了。

      規範的産生應該是民主的決定,而并非一人主導。每個人都有自己的編碼風格,如果每人都提出用自己的風格來制定規範也不複存在。如果對規範有意見,可以通過一定方法修訂并釋出新的規範,但是在新的規範釋出之前,請遵守統一的規範。

二、代碼複審

  這次我複審的代碼是我的結對夥伴鐘靈毓秀的代碼。部落格連結: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

·事後總結,并提出過程改進計劃